I wprowadziły wzór selekcji podobną do tej opisanej w this post użyciu ViewModel do przechowywania wartości IsSelected, a przez związanie ListViewItem.IsSelected
do ViewModel IsSelected:VirtualizingStackPanel + MVVM + wybór wielokrotny
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="IsSelected" Value="{Binding Mode=TwoWay, Path=IsSelected}"/>
</Style>
</ListView.ItemContainerStyle>
To działa ogólnie, ale napotykam na poważny problem. Za pomocą panelu VirtualizingStackPanel
jako panelu w widoku listy tworzone są tylko widoczne ListViewItem
. Jeśli użyję "Ctrl + A", aby wybrać wszystkie elementy, lub używając kombinacji skrótów takich "Shift + Ctrl + End" na pierwszym elemencie, wszystkie elementy zostaną wybrane, ale w przypadku niewidocznych elementów ViewModel nie zostanie usunięty z IsSelected ustawione na true. Jest to logiczne, ponieważ jeśli nie zostaną utworzone ListViewItem
, powiązanie nie będzie działać.
Ktoś doświadczył tego samego problemu i znalazł rozwiązanie (oprócz nieużywania VirtualizingStackPanel
)?
Spróbuj kompletne rozwiązanie dla tego problemu: http://stackoverflow.com/a/29545790 – nvkokorin