Я реализовал шаблон выбора, аналогичный описанному в этом сообщении, используя 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
)?