ViewModelを使用してIsSelected値を格納し、をViewModel IsSelectedにバインドすることにより、この投稿で説明されているものと同様の選択パターンを実装しました。ListViewItem.IsSelected
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="IsSelected" Value="{Binding Mode=TwoWay, Path=IsSelected}"/>
</Style>
</ListView.ItemContainerStyle>
一般的には動作しますが、深刻な問題が発生します。VirtualizingStackPanel
リストビューのパネルとしてaを使用すると、表示されているものだけListViewItem
が作成されます。「Ctrl+A」を使用してすべてのアイテムを選択するか、最初のアイテムで「Shift + Ctrl + End」などのショートカットの組み合わせを使用すると、すべてのアイテムが選択されますが、非表示のアイテムの場合、ViewModelはIsSelectedを取得しませんtrueに設定します。ListViewItem
が作成されていない場合、バインディングが機能しないため、これは論理的です。
誰かが同じ問題を経験し、解決策を見つけました(を使用しないことは別としてVirtualizingStackPanel
)?