我有一个数据网格,它被绑定到一个简单的List。 现在我想为它添加一个复选框列,当迭代抛出网格的项目时,我将能够将选择chckbox的行添加到另一个列表中。
有可能吗?
非常感谢答案 0 :(得分:0)
你确定可以。首先,我建议您的List是一个ObservableCollection,以便DataGrid保持绑定。
<DataGrid Name="SampleDataGrid" AutoGenerateColumns="False" ItemsSource="{Binding Path=SampleObservableCollection}">
<DataGrid.Columns>
<DataGridTextColumn Header="SampleOne" Binding="{Binding Path=SampleOne}"/>
<DataGridTextColumn Header="SampleTwo" Binding="{Binding Path=SampleTwo}"/>
<DataGridTemplateColumn Header="SampleThreeCheckBox">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding Path=SampleThreeCheckBox, UpdateSourceTrigger=PropertyChanged}">
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
(SampleOne,SapleTwo和SampleThreeCheckBox是您对象中列出的所有属性。)
将DataContext设置为this或ViewModel
DataContext = this; // Better if you use a ViewModel
然后创建一个只包含检查项的新列表,并将其设置为新DataGrid的ItemSource。
答案 1 :(得分:0)
我会用CollectionViewSource和Filter来做。 main绑定到List(或ObservableCollection)。第二个绑定到CollectionViewSource和复选框值上的Filter。我喜欢ListView GridView与DataGrid相比的方式。