这是XAML:
<Grid x:Name="G">
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<CheckBox Grid.Column="0"></CheckBox>
<CheckBox Grid.Column="1" IsChecked="True"></CheckBox>
<CheckBox Grid.Column="2" IsChecked="True"></CheckBox>
<CheckBox Grid.Column="3"></CheckBox>
</Grid>
我想删除CheckBox
为真的Grid
中的所有IsChecked
。
所以我写了这样的代码:
var RemoveList=G.Children.OfType<CheckBox>().Where(Child => Child.IsChecked == true);
foreach (CheckBox CB in RemoveList.ToList())
{
G.Children.Remove(CB);
}
我认为我的代码对于var RemoveList
是多余的,必须将其更改为列表。
我想找到一种方法,仅用一行代码删除UIElement,就可以使我更多地了解Lambda。
有没有办法做到这一点?谢谢。
答案 0 :(得分:2)
G.Children
.OfType<CheckBox>()
.Where(child => child.IsChecked == true)
.ToList()
.ForEach(child => G.Children.Remove(child));