我有一个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。但是我必须来回复制所有成员变量。我怎么能这样做?
答案 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>