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

rev*_*kpi 5 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" />
Run Code Online (Sandbox Code Playgroud)

所以在.cs文件中我需要获得这个Checkbox的价值:所以我有:

res.IsInheriting = tbIsInheriting.IsChecked;
Run Code Online (Sandbox Code Playgroud)

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

Mat*_*vey 15

tblsInheriting.IsChecked.GetValueOrDefault();
Run Code Online (Sandbox Code Playgroud)


Jon*_*eet 9

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

res.IsInheriting = tblsInheriting.IsChecked.Value;
Run Code Online (Sandbox Code Playgroud)

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

否则,如果它可能是三向的,我会使用:

res.IsInheriting = tblsInheriting.IsChecked ?? defaultValue;
Run Code Online (Sandbox Code Playgroud)

defaultValue可能在哪里truefalse取决于您希望如何翻译"不确定"状态.