我已经实现类似于在所描述的一个的选择图案此篇使用视图模型来存储IsSelected值,并通过结合所述ListViewItem.IsSelected的视图模型IsSelected:
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="IsSelected" Value="{Binding Mode=TwoWay, Path=IsSelected}"/>
</Style>
</ListView.ItemContainerStyle>
Run Code Online (Sandbox Code Playgroud)
它一般工作,但我遇到了严重的问题.通过VirtualizingStackPanel在列表视图中使用a 作为面板,仅ListViewItem创建了可见的.如果我使用"Ctrl + A"选择所有项目,或者使用第一项上的"Shift + Ctrl + End"快捷键组合,则会选择所有项目,但对于不可见项目,ViewModel不会获取其IsSelected设为true.这是合乎逻辑的,因为如果ListViewItem没有创建,绑定就无法工作.
任何人都遇到了同样的问题,并找到了解决方案(除了不使用a VirtualizingStackPanel)?