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

本文关键字:ListView 获取 状态 添加 WPF 复选框 | 更新日期: 2023-09-27 18:22:16

我有一个列表视图,其中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>

这将向列表视图中添加一个复选框列。但它与linq结果无关。因此,我无法使用listViewPlan.Items[I]访问复选框的当前状态。我也不想在数据库中的数据类型中添加bool,因为复选框声明单个用户不应全局存储在任何位置。我可以制作另一个类似于linq类的类,为Checkbox添加一个bool。但是,我必须来回复制所有成员变量。我该怎么做?

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

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

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