mvvm中数据更新问题

时间:2021-05-29 12:41:46
问题场景如下:

实现INotifyPropertyChanged的情况下。

使用ObservableCollection或者List集合。去绑定ItemsControl。此时修改了集合中的某一个对象的属性,其它不变。

请问数据更新机制中,会通知更新整个集合对象?还是只会更新修改的那一个对象?

7 个解决方案

#1


修改了一个对象,它去通知更新整个集合,它傻了吗?微软的天才程序员会采用这么低效的方法吗?用常识判断即可得出的结论。

#2


只会更新一个数据对象,没必要更新全部。

#3


引用 2 楼 duanzi_peng 的回复:
只会更新一个数据对象,没必要更新全部。

版主你好。这是我在msdn上的相同提问。他的回答是,只有增加和删除的提醒。说的和您有些出入。
https://social.msdn.microsoft.com/Forums/zh-CN/bb854b02-088d-40e7-b098-5a4d113988e4/mvvm?forum=wpfzhchs

#4


引用 1 楼 daixf_csdn 的回复:
修改了一个对象,它去通知更新整个集合,它傻了吗?微软的天才程序员会采用这么低效的方法吗?用常识判断即可得出的结论。


您能拿出一些具体的根据吗?比如说基于它实现了哪些接口基于机制下实现的通知。

#5


抠字眼儿是不能理解什么是“一致”的,需要用悟性理解。

#1、#2 楼已经说了,ObservableCollection 负责集合单元的增减,而 INotifyPropertyChanged 才负责单元中的对象的属性改变,这是两个完全不同的(没有直接关系的)功能知识点,根本产生不了纠结。要用心去理解。

#6


所谓“更新整个集合对象?还是只会更新修改的那一个对象”这个问题说法,本身就是因为空洞地用“更新”这个字眼儿而不搞明白机制才产生的混乱问题。 如果你稍微深入一点,就不至于张冠李戴了。

#7


集合里面的对象要实现INotifyPropertyChanged,否则集合对象属性的更新不会反映到界面的。集合是实现INotifyCollectionChanged接口的,集合负责的是集合成员在添加和删除时通知界面进行更新

#1


修改了一个对象,它去通知更新整个集合,它傻了吗?微软的天才程序员会采用这么低效的方法吗?用常识判断即可得出的结论。

#2


只会更新一个数据对象,没必要更新全部。

#3


引用 2 楼 duanzi_peng 的回复:
只会更新一个数据对象,没必要更新全部。

版主你好。这是我在msdn上的相同提问。他的回答是,只有增加和删除的提醒。说的和您有些出入。
https://social.msdn.microsoft.com/Forums/zh-CN/bb854b02-088d-40e7-b098-5a4d113988e4/mvvm?forum=wpfzhchs

#4


引用 1 楼 daixf_csdn 的回复:
修改了一个对象,它去通知更新整个集合,它傻了吗?微软的天才程序员会采用这么低效的方法吗?用常识判断即可得出的结论。


您能拿出一些具体的根据吗?比如说基于它实现了哪些接口基于机制下实现的通知。

#5


抠字眼儿是不能理解什么是“一致”的,需要用悟性理解。

#1、#2 楼已经说了,ObservableCollection 负责集合单元的增减,而 INotifyPropertyChanged 才负责单元中的对象的属性改变,这是两个完全不同的(没有直接关系的)功能知识点,根本产生不了纠结。要用心去理解。

#6


所谓“更新整个集合对象?还是只会更新修改的那一个对象”这个问题说法,本身就是因为空洞地用“更新”这个字眼儿而不搞明白机制才产生的混乱问题。 如果你稍微深入一点,就不至于张冠李戴了。

#7


集合里面的对象要实现INotifyPropertyChanged,否则集合对象属性的更新不会反映到界面的。集合是实现INotifyCollectionChanged接口的,集合负责的是集合成员在添加和删除时通知界面进行更新