Eu escrevi um pequeno aplicativo WPF para editar umarquivo de configuração A GUI consiste principalmente em dois ListBoxes. O conteúdo do segundo ListBox depende do item selecionado do primeiro ListBox e deve ser atualizado sempre que outro item no primeiro ListBox for selecionado. Percebi isso usando o evento SelectionChanged do primeiro ListBox para definir o ItemsSource do segundo. Criei e testei em minhas máquinas. Funcionou (e ainda está funcionando) bem. Em seguida, enviei o pedido ao meu colega para que ele pudesse tentar. Em sua máquina, o segundo ListBox não estava sendo atualizado (quando ele selecionou um item do primeiro ListBox, o segundo foi alterado conforme o esperado, mas não se ele selecionou outro item).
Eu reduzi o problema e descobri que o evento foi gerado conforme o esperado, mas o SelectedItem
propriedade não estava mudando.
Consegui resolver o problema usando o método AddedItems
propriedade do SelectionChangedEventArgs
, que está sendo atualizado corretamente.
Alguém sabe por que isso acontece? Além disso, o item selecionado é destacado corretamente. O WPF usa outra propriedade para determinar qual item destacar? E se sim, como eles podem ficar fora de sincronia?
Caso alguém pergunte aqui, estão os fragmentos de código relevantes
O ListBox:
<ListBox Name="lb_Users" SelectionChanged="lb_Users_SelectionChanged">
<ListBox.ContextMenu>
<ContextMenu>
<MenuItem Header="Remove" Click="UserRemove_Click"/>
</ContextMenu>
</ListBox.ContextMenu>
</ListBox>
E o manipulador atualizado:
private void lb_Users_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if((e.AddedItems[0] as User)!= null)
lb_VMs.ItemsSource = (e.AddedItems[0] as User).GetVMs();
}
Respostas:
1 para resposta № 1Como visto nos comentários, o problema é uma incompatibilidade de versão. Espero que isso ajude quem está tendo esse tipo de problema, pois parece que não há documentação sobre isso.