如何将源类型'System.Nullable '转换为目标类型'bool'
问题描述:
也许这是一个简单的问题,但我找不到答案。使用XAML我有这样的代码:如何将源类型'System.Nullable <bool>'转换为目标类型'bool'
<CheckBox Grid.Column="2" Grid.Row="3" Height="23" HorizontalAlignment="Left" Name="tbIsInheriting" VerticalAlignment="Top" Width="191" Margin="0,4,0,0" />
在
.cs
文件
,所以我需要得到这个复选框的值: 所以我有:
res.IsInheriting = tbIsInheriting.IsChecked;
,但是这是一个错误(不能将源类型“ System.Nullable'到目标类型'bool')。
答
tblsInheriting.IsChecked.GetValueOrDefault();
答
if (tbIsInheriting.IsChecked.HasValue == true)
res.IsInheriting = tbIsInheriting.IsChecked.Value;
答
CheckBox.IsChecked
返回bool?
,因为它可以是一个三路复选框。如果您的复选框从未三路,我会亲自使用:
res.IsInheriting = tblsInheriting.IsChecked.Value;
这将抛出一个异常,如果莫名其妙的复选框已成为没有你期待它三路,而且是在不确定状态。
否则,如果可能是三路,我会用:
res.IsInheriting = tblsInheriting.IsChecked ?? defaultValue;
其中defaultValue
很可能会取决于你如何想的“不确定”状态被翻译true
或false
。
+0
'??'绝对是要走的路。另一个选择是为'Nullable
这取决于你想要做什么,如果复选框处于“不确定”状态。 – Jon