我有一个对象列表,比如Cars,我想绑定到一个WinForm。
此WinForm的目的是编辑所有绑定的汽车的公共属性,例如比方说,IsRoadWorthy。
如何将复选框绑定到列表中所有汽车的.IsRoadWorthy属性,这样,如果所有汽车都是值得的,那么checkbox.Checked属性为true,如果所有汽车都不值得,那么复选框。 Checked属性是假的,介于两者之间,然后checkbox.Checked属性是'不确定''。
注意:我知道我可以通过将Checkbox.ThreeState属性设置为false然后在代码中将Checkbox.State设置为Indeterminate来限制用户设置Indeterminate状态。
答案 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;