5

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

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

4

3 回答 3

9

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

引自关于 ObservableCollection 的 MSDN 库文章

要完全支持将数据值从绑定源对象传输到绑定目标,集合中支持可绑定属性的每个对象都必须实现适当的属性更改通知机制,例如 INotifyPropertyChanged 接口。

于 2009-04-29T05:44:58.273 回答
1

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

  • 实现 INotifyPropertyChanged 接口(首选)。
  • 为绑定类型的每个属性提供一个更改事件。

不要两者都做。

来源:MSDN:INotifyPropertyChanged 接口

于 2009-04-29T12:00:47.527 回答
1

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

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

在 .Net 3.5 中引入

于 2011-02-27T11:54:58.720 回答