У меня проблема с тем, как ListView выбирает свои элементы.
У меня ListView привязан к ObservableCollection элементов, у которых есть свойство Selected. Я связал состояние выбора следующим образом:
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="IsSelected" Value="{Binding Path=Selected, Mode=TwoWay}" />
</Style>
</ListView.ItemContainerStyle>
Но с приблизительно 1000 Элементами в списке, ListView содержит контейнеры только для видимых объектов при запуске или около 500, когда уже прокручивается. Так что даже если я выберу все (Ctrl + A), выбор будет установлен только для этих 500.
Я также попробовал множество других решений, которые мне приходили в голову, но ни одно из них не сработало.
- ListView.SelectedItems не может быть привязан к.
- Использование события SelectionChanged для установки свойства 'Selected' - Вызывает много событий SelectionChanged при прокрутке до области, которая не кэшировалась во время выбора, и, следовательно, элементы были "новыми выбранными" для списка.
- Использование события SelectionChanged объекта ListView для добавления и удаления измененного выделения в дополнительную коллекцию. Невозможно выбрать из ViewModel, поскольку работает только в одном направлении.
Возможно ли в любом случае иметь ListView, где я могу выбрать более 500 элементов и иметь эту информацию где-нибудь в ViewModel. Также должна быть возможность выбора / отмены выбора из ViewModel.
Спасибо