将列添加到wpf有界数据网格

时间:2012-01-11 20:34:05

标签: wpf

我有一个数据网格,它被绑定到一个简单的List。 现在我想为它添加一个复选框列,当迭代抛出网格的项目时,我将能够将选择chckbox的行添加到另一个列表中。

有可能吗?

非常感谢

2 个答案:

答案 0 :(得分:0)

你确定可以。首先,我建议您的List是一个ObservableCollection,以便DataGrid保持绑定。

首先在XAML中创建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是您对象中列出的所有属性。)

第二次更新您的Code-Behind

将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相比的方式。