如何将复选框列添加到WPF中的ListView并获取其状态

时间:2015-11-17 11:49:06

标签: c# wpf linq listview checkbox

我有一个listview,其中ItemsSource设置为linq查询的结果,如此

listViewPlan.ItemsSource = new ObservableEvents(query);

结果的值绑定到listView的列。 现在,我想添加另一个包含复选框的列,以便用户可以选择列表视图中的一些项目。所以我添加了这个

            <GridViewColumn DisplayMemberBinding="{Binding select}">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <CheckBox Tag="select"/>
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
                <GridViewColumnHeader Click="SortClick" Tag="select" Content="" />
            </GridViewColumn>

这会将Checkbox列添加到列表视图中。但它与linq结果没有任何关系。所以我无法使用listViewPlan.Items [i]访问Checkbox的当前状态。我也不想从数据库中添加bool到数据类型,因为单个用户的复选框状态不应该存储在全局的任何地方。我可以创建另一个类似于linq类的类,并为Checkbox添加了一个bool。但是我必须来回复制所有成员变量。我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

您可以在列表框中使用多选模式,并将CheckBox.IsChecked绑定到ListViewItem.IsSelected。

<DataTemplate x:Key="ListBoxItemTemplate">
    <CheckBox IsChecked="{Binding Mode=TwoWay, RelativeSource={RelativeSource FindAncestor, 
                                                      AncestorType={x:Type ListViewItem}}, Path=IsSelected}" />
</DataTemplate>