【发布时间】:2010-10-01 12:44:47
【问题描述】:
我对 ListView 选择其项目的方式有疑问。
我有一个 ListView 绑定到具有“已选择”属性的项目的 ObservableCollection。我已经像这样绑定选择状态:
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="IsSelected" Value="{Binding Path=Selected, Mode=TwoWay}" />
</Style>
</ListView.ItemContainerStyle>
但是列表中大约有 1000 个项目,ListView 仅在开始时保存可见对象的容器,或者在已经滚动时保存大约 500 个。因此,即使我全选 (Ctrl+A),也只会为这 500 个设置选择。
我还尝试了许多其他想到的解决方案,但都没有奏效。
- ListView.SelectedItems 无法绑定。
- 使用 SelectionChanged 事件设置“Selected”属性 - 滚动到某个区域时触发了很多 SelectionChanged 事件,这些事件在选择时未缓存,因此列表中的项目是“新选择的”。
- 使用 ListView 的 SelectionChanged 事件将更改的选择添加和删除到额外的集合 - 无法从 ViewModel 中选择,因为只能在一个方向上工作。
是否有可能拥有一个 ListView,我可以在其中选择 500 多个项目,并在 ViewModel 中的某个位置拥有此信息。也应该可以从 ViewModel 中选择/取消选择。
谢谢
【问题讨论】: