如何更新ObservableCollection的现有元素?

时间:2009-04-28 22:27:19

标签: c# wpf datatemplate observablecollection

我有一个ObservableCollection实例绑定到一个带有两个独立数据模板的WPF列表框(一个用于显示,一个用于编辑)。用于编辑的数据模板在文本框上具有单向绑定,并具有“保存”按钮。

我需要进行哪些更改才能按下“保存”按钮(将列表项置于编辑模式后),值I更改文本框以替换ObservableCollection(和显示)中的值?

3 个答案:

答案 0 :(得分:9)

集合中的项目应该是实现INotifyPropertyChanged接口的类型。这样,您的列表框将通知您单个项目对象中的属性值已更改。 ObservableCollection仅在集合更改(添加,删除项目等)时引发CollectionChanged事件。

引用来自ObservableCollection的MSDN库文章

  

完全支持传输数据   从绑定源对象到的值   绑定目标,你的每个对象   支持可绑定的集合   属性必须实现   适当的财产变了   通知机制如   INotifyPropertyChanged接口。

答案 1 :(得分:1)

要在绑定客户端和数据源之间的绑定中发生更改通知,您的绑定类型应该是:

  • 实施INotifyPropertyChanged 界面(首选)。
  • 为每个提供更改事件 绑定类型的属性。

不要两者兼顾。

来源:MSDN: INotifyPropertyChanged Interface

答案 2 :(得分:1)

我使用BindingList< T>解决了类似的问题。类。

它在集合和单个项目更改时都触发了ListChanged事件。

在.Net 3.5中引入