将多个布尔值绑定到单个WinForms复选框

时间:2016-05-11 05:30:35

标签: c# winforms

我有一个对象列表,比如Cars,我想绑定到一个WinForm。

此WinForm的目的是编辑所有绑定的汽车的公共属性,例如比方说,IsRoadWorthy。

如何将复选框绑定到列表中所有汽车的.IsRoadWorthy属性,这样,如果所有汽车都是值得的,那么checkbox.Checked属性为true,如果所有汽车都不值得,那么复选框。 Checked属性是假的,介于两者之间,然后checkbox.Checked属性是'不确定''。

注意:我知道我可以通过将Checkbox.ThreeState属性设置为false然后在代码中将Checkbox.State设置为Indeterminate来限制用户设置Indeterminate状态。

1 个答案:

答案 0 :(得分:1)

您可以使用Linq的扩展方法All

var cars = new List<Car>();

checkbox.CheckedState = (cars.All(c => c.IsRoadWorthy)) ? CheckState.Checked :
                        (cars.All(c => !c.IsRoadWorthy)) ? CheckState.Unchecked
                        CheckState.Indeterminate;