如何转换源类型'System.Nullable'目标类型'bool'

本文关键字:类型 bool Nullable 目标 System 转换 何转换 | 更新日期: 2023-09-27 18:08:03

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

<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 ')。

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

tblsInheriting.IsChecked.GetValueOrDefault();

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

res.IsInheriting = tblsInheriting.IsChecked.Value;

如果你的复选框不知何故在你没有预料到的情况下变成了三向,并且处于不确定状态,那将抛出一个异常。

否则,如果可能是三向的,我会使用:
res.IsInheriting = tblsInheriting.IsChecked ?? defaultValue;

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

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