我有一个ObservableCollection实例,绑定到一个WPF列表框上,其中包含两个不同的数据模板(一个用于显示,一个用于编辑)。编辑数据模板中的文本框具有单向绑定,并带有保存按钮。
当我按下保存按钮(在将列表项设置为编辑模式后),我需要进行哪些更改,以便我所更改的文本框值替换ObservableCollection中的值(并更新显示)?
我有一个ObservableCollection实例,绑定到一个WPF列表框上,其中包含两个不同的数据模板(一个用于显示,一个用于编辑)。编辑数据模板中的文本框具有单向绑定,并带有保存按钮。
当我按下保存按钮(在将列表项设置为编辑模式后),我需要进行哪些更改,以便我所更改的文本框值替换ObservableCollection中的值(并更新显示)?
您收藏的项目应该是实现了INotifyPropertyChanged接口的类型。这样,当您单个项目对象中的属性值发生更改时,您的列表框将会收到通知。ObservableCollection仅在集合更改(添加、删除等)时引发CollectionChanged事件。
摘自MSDN库文章关于ObservableCollection的引用:
为了完全支持从绑定源对象向绑定目标传输数据值,您集合中支持可绑定属性的每个对象都必须实现适当的属性更改通知机制,例如INotifyPropertyChanged接口。
为了在绑定的客户端和数据源之间发生更改通知,您的绑定类型应该实现以下之一:
不要同时做两者。
我曾经使用过 BindingList<T> 类解决类似的问题。
它可以在集合和单个项目更改时触发 ListChanged 事件。
自 .Net 3.5 引入