Я реализовал шаблон выбора, подобный тому, который описан в этот пост, используя 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>
Это работает в целом, но я столкнулся с серьезной проблемой. Используя a VirtualizingStackPanel
как панель в представлении списка, создаются только видимые ListViewItem
. Если я использую "Ctrl + A" для выбора всех элементов или с помощью сочетания клавиш "Shift + Ctrl + End" в первом элементе, все элементы выбираются, но для невидимых элементов ViewModel не получает свой IsSelected установите значение true. Это логично, потому что если ListViewItem
не создается, привязка не может работать.
Кто-нибудь испытал ту же проблему и нашел решение (кроме использования VirtualizingStackPanel
)?