绑定到Tri-state复选框的最佳方法是什么?

时间:2011-12-06 15:01:47

标签: .net winforms data-binding

我正在尝试绑定到将ThreeState propety设置为True的复选框。如果CheckState不确定,我们希望能够返回null,而无需为每个复选框编写事件处理程序。此特定表单上有20多个复选框。

我试图绑定到CheckState,但不确定状态不返回null并锁定表单。当复选框处于不确定状态时,绑定到checked属性将返回True。此外,我们绑定到类对象属性,而不是数据表。

团队有两种可能的解决方案,都有它们的缺点: 一种是在类中为每个读取CheckState的布尔属性创建一个附加属性,然后相应地将boolean属性设置为null,true或false。很难将所有这些属性添加到所有具有非必需字段的布尔字段的类中。

第二个是创建一个自定义控件控件,它继承了checkbox控件,并添加了一个我们可以使用该类的boolean属性绑定的新属性。大多数人都知道自定义控件有自己的问题。

我的问题是: 我在俯瞰什么? 有没有更好的方法通过数据绑定实现这一点? 其他人使用了哪些其他方法?

1 个答案:

答案 0 :(得分:2)

感谢Chris F提到可以为null的(布尔)数据类型。

通过将属性数据类型设置为Nullable(布尔值),然后设置绑定到CheckState而不是checked,导致一切正常工作。发送到数据库的值对应于正确的设置。 Intermediate将值设置为Nothing(数据库中为Null),Checked将其设置为True,未选中将其设置为False。