Caixa de listagem "IsSelected" ligação apenas parcialmente trabalhando
eu tenho umListBox
que eu preenchimento dinamicamente através de uma ligação (isto é definido em umDataTemplate
, e é por isso que a ligação é um tanto incomum):
<ListBox SelectionMode="Extended" ItemsSource="{Binding DataContext.ResultList, RelativeSource={RelativeSource AncestorType=Window}}">
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Setter Property="IsSelected" Value="{Binding IsSelected}"/>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.ItemTemplate>
<DataTemplate>
<Label Content="{Binding Object}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
CadaListBoxItem
'sIsSelected
propriedade está vinculada a umIsSelected
propriedade em um objeto personalizado.
Quando eu seleciono indivíduoListBoxItem
s, a ligação funciona corretamente - o objeto personalizadoIsSelected
A propriedade é atualizada no meu ViewModel. No entanto, se eu selecionar todos osListBoxItem
s com um comando Ctrl + A, apenas o visível no momentoListBoxItem
s (aqueles que estão atualmente em minha viewport de rolagem) atualizam suas ligações ViewModel. No frontend, todo oListBoxItem
s parecem estar selecionados eListBox.SelectedItems.Count
propriedade no contêinerListBox
mostra que todos os itens estão selecionados.
Além disso, enquanto percorro oListBox
depois de selecionar todosListBoxItem
s com Ctrl + A, as ligações são atualizadas com sucesso quando cadaListBoxItem
é rolado para a vista.
Por que essa ligação parece estar funcionando apenas parcialmente? Existe uma maneira melhor de lidar com a ligação doIsSelected
propriedade quando um grande número deListBoxItems
pode ser selecionado simultaneamente?
Editar: Esse comportamento não acontece exclusivamente com o comando Ctrl + A - obtenho os mesmos resultados ao selecionar todos os itens usando um shift + click.