Não foi possível obter os itens selecionados corretamente se você definir o ListView ItemsContainer como VirtualizationStackPanel

Defino 'VirtualizingStackPanel.IsVirtualizing' como true e 'VirtualizingStackPanel.VirtualizationMode' como 'Recycling', porque os itens no meu ListView são muitos. O SelectionMode do ListView é estendido, a propriedade 'IsSelected' do ListViewItem está vinculada à propriedade 'IsSelected' do meu modelo, o modo de ligação é bidirecional.

Quando eu quero usar Ctrl + A para selecionar todos os itens, ele seleciona apenas parte dos itens, então eu uso KeyBinding para escrever o método selecionar todos, como abaixo:

 <KeyBinding Command="{Binding SelectAllCommand}"
                            Modifiers="Control"
                            Key="A"/>

O método SelectAll fará um loop na coleção ItemsSource e definirá cada uma das propriedades IsSelected do item como true. Mas isso também leva a algo inesperado. Quando todos os itens são selecionados, rolo a barra de rolagem para baixo e ele carrega mais itens no ListView, clico apenas um item e o esperado é que todos os outros itens não estejam selecionados, apenas selecione esse item. Mas, parece não desmarcar outros itens.

Alguém pode ajudar?

questionAnswers(1)

yourAnswerToTheQuestion