Como faço para atualizar um elemento existente de uma ObservableCollection?
-
03-07-2019 - |
Pergunta
I têm uma instância de ObservableCollection ligado a uma caixa de listagem WPF com dois padrões distintos de dados (uma para exibição, um para a edição). O modelo de dados para a edição tem uma ligação na caixa de texto one-way, e um botão Salvar.
Que mudanças eu preciso fazer para que quando eu pressionar o botão Save (depois de colocar o item da lista no modo de edição), o valor I mudar a caixa de texto para substitui o valor no ObservableCollection (e visor)?
Solução
Os produtos em sua coleção deve ser do tipo que implementa INotifyPropertyChanged interface. Desta forma, sua caixa de listagem será notificado de que o valor da propriedade em seu objeto único item mudou. ObservableCollection aumentos CollectionChanged evento somente quando as mudanças de coleta (itens adicionados, removidos, etc.)
citar o artigo biblioteca MSDN em ObservableCollection
Para apoiar plenamente a transferência de dados Os valores de ligao para objectos de origem objectivos vinculativos, cada objeto em seu coleção que suporta bindable Propriedades deve implementar um propriedade apropriada alterado mecanismo de notificação, tais como o INotifyPropertyChanged interface.
Outras dicas
Para notificação de alteração de ocorrer em uma ligação entre um cliente amarrado e uma fonte de dados, o tipo de limite deve ser:
- Implementar o INotifyPropertyChanged Interface (preferido).
- Fornecer um evento de alteração para cada propriedade do tipo de limite.
Não faça ambos.
Eu já resolveu problema semelhante usando BindingList
Tem ListChanged disparado tanto na recolha e mudança item individual.
Introduzido em .Net 3.5