ich ein Auswahlmuster ähnlich dem in this post beschrieben implementiert haben eine Ansichtsmodell mit dem IsSelected Wert zu speichern, und durch die ListViewItem.IsSelected
auf die Ansichtsmodell IsSelected Bindung:VirtualizingStackPanel + MVVM + Mehrfachauswahl
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="IsSelected" Value="{Binding Mode=TwoWay, Path=IsSelected}"/>
</Style>
</ListView.ItemContainerStyle>
Es funktioniert im Allgemeinen, aber ich stoße auf ein ernstes Problem. Wenn Sie die a VirtualizingStackPanel
als Panel in der Listenansicht verwenden, werden nur die sichtbaren ListViewItem
erstellt. Wenn ich "Strg + A" verwende, um alle Elemente auszuwählen, oder eine Verknüpfungskombination wie "Umschalt + Strg + Ende" für das erste Element verwenden, werden alle Elemente ausgewählt, aber für nicht sichtbare Elemente erhält das ViewModel nicht seine IsSelected auf wahr gesetzt. Das ist logisch, denn wenn die ListViewItem
nicht erstellt werden, kann die Bindung nicht funktionieren.
Jeder hatte das gleiche Problem und fand eine Lösung (abgesehen davon, dass kein VirtualizingStackPanel
verwendet wurde)?
diese komplette Lösung für dieses Problem Versuchen: http://Stackoverflow.com/a/29545790 – nvkokorin