あいまいなタイトルで申し訳ありませんが、何が起こっているのかを要約する良い方法を思い付くことができませんでした。
バインドされたWPFリストボックスがあります。
<UserControl.Resources>
<DataTemplate DataType="{x:Type local:MyBoundObject}">
<TextBlock Text="{Binding Label}" />
</DataTemplate>
</UserControl.Resources>
<ListBox ItemsSource="{Binding SomeSource}" SelectionMode="Extended">
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="IsSelected Value="{Binding Path=IsSelected, Mode=TwoWay}"/>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
選択したアイテムのみを操作したい。これを行うには、すべてのアイテムのリストを繰り返し処理し、各オブジェクトをチェックして、IsSelectedプロパティが設定されているかどうかを確認します。
これは、リストに多数のアイテムがあり(すべてが表示されないようにするのに十分な場合)、Ctrlキーを押しながらAキーを押してすべてのアイテムを選択する場合を除いて機能します。これを行うと、表示されているすべてのアイテムのIsSelectedプロパティがtrueに設定され、残りはすべてfalseのままになります。下にスクロールするとすぐに他のアイテムが表示され、それらのIsSelectedプロパティがtrueに設定されます。
Ctrl-Aを押したときにすべてのオブジェクトのIsSelectedプロパティがtrueに設定されるように、この動作を修正する方法はありますか?