为啥 CheckBox.IsChecked 属性为 Nullable<bool>?

Posted

技术标签:

【中文标题】为啥 CheckBox.IsChecked 属性为 Nullable<bool>?【英文标题】:Why is CheckBox.IsChecked property Nullable<bool>?为什么 CheckBox.IsChecked 属性为 Nullable<bool>? 【发布时间】:2011-05-30 15:02:19 【问题描述】:

为什么 WPF 中 bool?(或 Nullable&lt;bool&gt;)类型的复选框控件的 IsChecked 属性。我的意思是一个复选框控件怎么会有null的值?

【问题讨论】:

Why is IsChecked property nullable boolean in WPF CheckBox?的可能重复 【参考方案1】:

是的,空值存在并显示为填充框。表示对系统“不适用”。

【讨论】:

【参考方案2】:

根据documentation,IsChecked 属性具有三种不同的可能状态:

 

因此,当IsChecked 设置为null 时,复选框将显示“不确定”状态。这通常表示为带阴影或灰显的控件。

【讨论】:

【参考方案3】:

复选框可以有第三种、灰色、不确定的状态。

【讨论】:

【参考方案4】:

不要忘记将复选框的属性 IsThreeState 设置为 true 以启用此功能。

【讨论】:

【参考方案5】:

因为 WPF 支持绑定。如果我们将一个 DB 布尔列值绑定到一个复选框。该列可能具有 True/False/Null 值。这意味着它具有三个布尔字段值。所以 WPF UI 也应该处理这三种状态。

【讨论】:

以上是关于为啥 CheckBox.IsChecked 属性为 Nullable<bool>?的主要内容,如果未能解决你的问题,请参考以下文章

WPF 数据绑定 CheckBox.IsChecked

如何在不引发事件的情况下设置 checkbox.isChecked

为啥绑定表达式在 OneWay 模式下分离?

wpf datagrid中添加一列checkbox,反复点选,会出现checkbox框偏移,请wpf大神帮忙!

如何正确使用带有if语句的bool?

Libgdx 之CheckBox ScrollPane