我已经实现了一个类似于此帖子中描述的选择模式,使用ViewModel存储IsSelected值,并将 ListViewItem.IsSelected
绑定到ViewModel的IsSelected属性:
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="IsSelected" Value="{Binding Mode=TwoWay, Path=IsSelected}"/>
</Style>
</ListView.ItemContainerStyle>
它通常有效,但我遇到了一个严重的问题。如果在列表视图中使用 VirtualizingStackPanel
作为面板,只有可见的 ListViewItem
会被创建。如果我使用 "Ctrl+A" 来选择所有项目,或者通过使用如 "Shift+Ctrl+End" 这样的快捷键组合来选择第一个项目,所有项目都会被选中,但对于不可见的项目,ViewModel 的 IsSelected 属性没有被设置为 true。这是合乎逻辑的,因为如果 ListViewItem
没有被创建,绑定就无法工作。
有人遇到过相同的问题,并找到了解决方案(除了不使用 VirtualizingStackPanel
)吗?