如何将源类型'System.Nullable <bool>'转换为目标类型'bool'</bool>

时间:2011-09-07 07:37:08

标签: c# asp.net asp.net-mvc xaml

也许这是一个简单的问题,但我找不到答案。使用XAML我有这个代码:

<CheckBox Grid.Column="2"  Grid.Row="3" Height="23" HorizontalAlignment="Left" Name="tbIsInheriting"  VerticalAlignment="Top" Width="191" Margin="0,4,0,0" />

所以在.cs文件中我需要获取此Checkbox的值: 所以我有:

res.IsInheriting = tbIsInheriting.IsChecked;

但这是一个错误(无法将源类型'System.Nullable'转换为目标类型'bool')。

3 个答案:

答案 0 :(得分:15)

tblsInheriting.IsChecked.GetValueOrDefault();

答案 1 :(得分:9)

CheckBox.IsChecked会返回bool?,因为它可以是三向复选框。如果您的复选框从不三向,我个人会使用:

res.IsInheriting = tblsInheriting.IsChecked.Value;

如果您的复选框在没有预期的情况下变成三向,并且处于不确定状态,那将抛出异常。

否则,如果可能为三向,我会使用:

res.IsInheriting = tblsInheriting.IsChecked ?? defaultValue;

其中defaultValue可能是truefalse,具体取决于您希望如何翻译“不确定”状态。

答案 2 :(得分:3)

if (tbIsInheriting.IsChecked.HasValue == true)
     res.IsInheriting = tbIsInheriting.IsChecked.Value;