C# CheckBox.IsChecked.HasValue何时变为false?
我已经用过很多次了C# CheckBox.IsChecked.HasValue何时变为false?,c#,.net,wpf,C#,.net,Wpf,我已经用过很多次了 if (chkBox.IsChecked.HasValue && chkBox.IsChecked.Value) 但是为什么呢?在什么情况下,chkBox.IsChecked.HasValue变为false 我通过创建一个复选框并对其进行调试来查看HasValue 在构造函数上选中,在选中并取消选中复选框后选中。但是HasValue总是被发现为true。chkBox.IsChecked是一个bool?,这意味着它是一个可为null的布尔值(可以设置为null
if (chkBox.IsChecked.HasValue && chkBox.IsChecked.Value)
但是为什么呢?在什么情况下,chkBox.IsChecked.HasValue
变为false
我通过创建一个复选框并对其进行调试来查看HasValue
在构造函数上选中,在选中并取消选中复选框后选中。但是
HasValue
总是被发现为true。chkBox.IsChecked
是一个bool?
,这意味着它是一个可为null的布尔值(可以设置为null
)。该复选框可以有三个值:true
、false
和null
如果IsChecked
设置为null
,则HasValue
将为false
因此,您可以绑定到Checked
属性,并将该值设置为null
,就像在下面的代码中一样HasValue
将为false
:
chkBox.IsChecked = null;
另外,请参阅有关使用的文档
Nullable
是一个struct
,实际上它不能是null
。这只是C#中的一个把戏。您可以看到它是null
,但实际上它是一个struct
,将HasValue
设置为false复选框可以是三种状态-可以选中、取消选中或不确定值。如果该值不确定,HasValue
返回false
<CheckBox IsThreeState="True" IsChecked="{x:Null}" />
如果它是一个3状态复选框,则可以为null(.hasvalue=false)。但是,您必须在标记中指定它为3state。是。我已经尝试分配空值。但是通过这样做,复选框显示了第三种状态。而不是chkBox.IsChecked.Value
我们可以不写chkBox.Value
?没有Value
属性@Sujoy。@Patrick,对不起,我是说chkBox.IsChecked
。我们可以检查chkBox.IsChecked.Value而不是chkBox.IsChecked.Value吗?是的,我在赋值null时看到了第三种状态