如果未选中StackPanel中的所有CheckBox,我想执行一项任务。目前我正在做这样的事情;
foreach (CheckBox c in _employees.Children)
{
if (c.IsChecked == false)
{
// do something
}
}
然而,当然这表示每当遇到错误的CheckBox
时都会做一些事情。有没有办法可以说只有在未检查所有CheckBoxes
时才做某事,而不是单独评估它们?
答案 0 :(得分:5)
是的,您可以使用Linq:
if(_employees.Children.All(c=>!c.IsChecked)) {...}
修改:您使用的UIElementCollection
不是通用集合。所以你必须先施展它。代码将是
if(_employees.Children.OfType<CheckBox>().All(c=>c.IsChecked==false)) {...}
或者
if(_employees.Children.Cast<CheckBox>().All(c=>c.IsChecked==false)) {...}
第一种方法将跳过所有不属于CheckBox
类型的元素,而第二种方法将在发现此类元素时抛出异常