none
mvvm中数据更新问题 RRS feed

  • 问题

  • 问题场景如下:

    实现INotifyPropertyChanged的情况下。

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

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

    2017年12月11日 7:05

答案

  • Hi,

    ObservableCollection实现了INotifyCollectionChanged接口与 INotifyPropertyChanged接口。

    INotifyCollectionChanged提供整个列表刷新时的通知。

    INotifyPropertyChanged提供当集合的项添加和删除时的通知。

    但是不提供项目(对象)更改的通知。

    而List没有实现这两个接口。

    所以,如果你想对象得到更新,那么这个对象也得实现INotifyPropertyChanged接口。

    Sincerely,

    Bob


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已标记为答案 Juster.zhu 2017年12月12日 6:55
    2017年12月12日 6:46
    版主

全部回复

  • Hi,

    ObservableCollection实现了INotifyCollectionChanged接口与 INotifyPropertyChanged接口。

    INotifyCollectionChanged提供整个列表刷新时的通知。

    INotifyPropertyChanged提供当集合的项添加和删除时的通知。

    但是不提供项目(对象)更改的通知。

    而List没有实现这两个接口。

    所以,如果你想对象得到更新,那么这个对象也得实现INotifyPropertyChanged接口。

    Sincerely,

    Bob


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    • 已标记为答案 Juster.zhu 2017年12月12日 6:55
    2017年12月12日 6:46
    版主
  • Hi,

    ObservableCollection实现了INotifyCollectionChanged接口与 INotifyPropertyChanged接口。

    INotifyCollectionChanged提供整个列表刷新时的通知。

    INotifyPropertyChanged提供当集合的项添加和删除时的通知。

    但是不提供项目(对象)更改的通知。

    而List没有实现这两个接口。

    所以,如果你想对象得到更新,那么这个对象也得实现INotifyPropertyChanged接口。

    Sincerely,

    Bob


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.


         如果要做到集合中的单个对象修改的通知该如何去做呢?
    2017年12月12日 7:01
  • Hi,

    >> 如果要做到集合中的单个对象修改的通知该如何去做呢?

    只要你的对象实现INotifyPropertyChanged接口就行了。

    只要这个类实现INotifyPropertyChanged  ,那么这个类就支持单向和双向绑定,使得UI元素可以动态更改源更新时。

    Sincerely,

    Bob


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2017年12月12日 7:10
    版主
  • Hi,

    >> 如果要做到集合中的单个对象修改的通知该如何去做呢?

    只要你的对象实现INotifyPropertyChanged接口就行了。

    只要这个类实现INotifyPropertyChanged  ,那么这个类就支持单向和双向绑定,使得UI元素可以动态更改源更新时。

    Sincerely,

    Bob


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.


          感谢回答,已将回答标记为答案。祝你工作愉快!
    2017年12月12日 7:14