我有一个带有复选框和文本框的网格,列表 list1作为列表(Stuff)填充文本框。 prop1 是 Stuff
的属性<Grid Name="MainGrid">
<ItemsControl ItemsSource="{Binding}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Name="g1">
<CheckBox Grid.Column="0" Checked="CheckBox_Checked"/>
<TextBox Grid.Column="1" Name="TextBox1" Text="{Binding prop1}" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
如何使用复选框创建仅选中值的新列表?
编辑:修正了XAML(2)
答案 0 :(得分:1)
在Stuff
周围创建一个包装类,添加一个布尔IsChecked
属性。将CheckBox.IsChecked
属性绑定到StuffWrapper.IsChecked
,并将TextBox.Text
属性绑定到StuffWrapper.Stuff
。而不是将ItemsSource
存储为List<Stuff>
,现在是List<StuffWrapper>
。
然后,要创建仅包含已检查项目的新列表,请使用Linq“Where”功能,如下所示:
var checkedList = list1.Where(s => s.IsChecked);