ListView の項目が多すぎるため、'VirtualizingStackPanel.IsVirtualizing' を true に設定し、'VirtualizingStackPanel.VirtualizationMode' を 'Recycling' に設定しました。ListView の SelectionMode は拡張され、ListViewItem の 'IsSelected' プロパティはモデルの 'IsSelected' プロパティにバインドされ、バインド モードは双方向です。
Ctrl+A ですべての項目を選択したい場合、項目の一部しか選択されないため、以下のように KeyBinding を使用して select all メソッドを記述します。
<KeyBinding Command="{Binding SelectAllCommand}"
Modifiers="Control"
Key="A"/>
SelectAll メソッドは、ItemsSource コレクションをループし、各項目の IsSelected プロパティを true に設定します。しかし、それは予期せぬ事態にもつながります。すべてのアイテムが選択されたら、スクロールバーを一番下までスクロールすると、ListView にさらにアイテムが読み込まれます。1 つのアイテムをシングルクリックすると、他のすべてのアイテムが選択されていないことが予想され、このアイテムのみを選択します。しかし、他のアイテムの選択を解除することはできないようです。
誰でも助けることができますか?