我已经实现了一种类似于这篇文章中描述的选择模式,使用 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>
它通常有效,但我遇到了一个严重的问题。通过使用 aVirtualizingStackPanel
作为列表视图中的面板,只会创建可见ListViewItem
的。如果我使用“Ctrl+A”选择所有项目,或者通过在第一个项目上使用“Shift+Ctrl+End”等快捷键组合,所有项目都会被选中,但对于不可见项目,ViewModel 不会获得其 IsSelected设置为真。这是合乎逻辑的,因为如果ListViewItem
没有创建,绑定将无法工作。
有没有人遇到过同样的问题,并找到了解决方案(除了不使用 a VirtualizingStackPanel
)?