Cuadro de lista IsSelected with SelectionMode = Extended
Perdón por el vago título, no pude encontrar una buena manera de resumir lo que está sucediendo.
Tengo un cuadro de lista de WPF enlazado:
<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>
Quiero operar SOLO en los artículos seleccionados. Hago esto mediante la iteración a través de una lista de todos los elementos y verificando cada objeto para ver si su propiedad está seleccionada.
Esto funciona excepto cuando tengo muchos elementos en la lista (lo suficiente para que no todos estén visibles) y presiono CTRL-A para seleccionar todos los elementos. Cuando hago esto, todos los elementos visibles tienen su propiedad IsSelected establecida en true, y todos los demás quedan en falso. Tan pronto como me desplazo hacia abajo, los otros elementos aparecen a la vista y sus propiedades IsSelected se establecen en verdadero.
¿Hay alguna forma de corregir este comportamiento para que la propiedad IsSelected de cada objeto se establezca como verdadera cuando presiono CTRL-A?