CheckBox.IsChecked.HasValue何时变为false?

时间:2015-03-17 13:16:32

标签: c# .net wpf

我已多次使用以下

if (chkBox.IsChecked.HasValue && chkBox.IsChecked.Value)

但为什么呢? chkBox.IsChecked.HasValue变为假的情况是什么?

我通过创建一个复选框进行检查并对其进行调试以查看HasValue

检查构造函数,检查并取消选中复选框后选中。但HasValue总是被发现是真的。

2 个答案:

答案 0 :(得分:7)

chkBox.IsCheckedbool?,这意味着它是可以为空的布尔值(可以设置为null)。该复选框可以包含三个值:truefalsenull

如果HasValue设置为false

IsChecked将为null

因此,您可以绑定到Checked属性并将值设置为null,就像在此代码中一样。 HasValue将为false

chkBox.IsChecked = null;

另外,请参阅有关Nullable<T>的使用情况的文档。

Nullable<T>struct,实际上它不能是null。这只是C#中的一个技巧。您看到它是null,但事实上它是structHasValue设置为false

答案 1 :(得分:1)

复选框可以是ThreeState - 可以检查,取消选中或不确定值。如果值不确定,HasValue将返回false。

<CheckBox IsThreeState="True" IsChecked="{x:Null}" />