Caixa de listagem IsSelected com SelectionMode = Extended
Desculpe pelo título vago, não consegui encontrar uma boa maneira de resumir o que está acontecendo.
Eu tenho uma caixa de listagem WPF vinculada:
<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>
Eu quero operar apenas os itens selecionados. Eu faço isso iterando uma lista de todos os itens e verificando cada objeto para ver se a propriedade IsSelected está definida.
Isso funciona, exceto quando eu tenho muitos itens na lista (o suficiente para que eles não fiquem todos visíveis) e pressiono CTRL-A para selecionar todos os itens. Quando faço isso, todos os itens visíveis têm sua propriedade IsSelected definida como true e todo o restante é deixado como false. Assim que eu rolar para baixo, os outros itens aparecem e suas propriedades IsSelected são definidas como verdadeiras.
Existe alguma maneira de corrigir esse comportamento para que a propriedade IsSelected de cada objeto é definida como true quando eu pressionar CTRL-A?