如何在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。但是,我必须来回复制所有成员变量。我该怎么做?
您可以在列表框中使用多选模式,并将CheckBox.IsChecked绑定到ListViewItem.IsSelected.
<DataTemplate x:Key="ListBoxItemTemplate">
<CheckBox IsChecked="{Binding Mode=TwoWay, RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type ListViewItem}}, Path=IsSelected}" />
</DataTemplate>