gpt4 book ai didi

wpf - 在 ObservableCollection 上实现 INotifyPropertyChanged 的​​目的是什么?

转载 作者:行者123 更新时间:2023-12-04 06:12:41 25 4
gpt4 key购买 nike

ObservableCollection实现INotifyCollectionChangedINotifyPropertyChanged .

  • 我理解补充,
    删除(+清除)和替换
    的元素需要通知消费者
    通过收藏 的事件CollectionChanged ,并且更新
    在现有项目中可以
    使用 监控项目 ' 事件PropertyChanged如果他们实现
    自己INotifyPropertyChanged .
  • 我从别人那里读到你不能
    注册收藏事件PropertyChanged因为它是
    只读。

  • 那么它的目的是什么,我们可以利用它来做什么 ?

    这里和那里的评论似乎通过暗示 ObservableCollection 的魔力使讨论变得困惑。是实现这两个接口(interface),允许同时通知集合和项目内容的更改,虽然这是不正确的(这被许多示例忽略,其中集合绑定(bind)到列表框,列表框在项目内容更改后神奇地更新,暗示集合通知列表框)。

    实际上,该集合的唯一优势似乎是实现 INotifyCollectionChanged .使用 ObservableCollection 处理项目属性更改似乎一点也不轻松。与另一个集合相比:只有当项目实现 INotifyPropertyChanged 时才有可能,他们可能不会这样做,并且如果用户设法独立于集合来 Hook 此事件。

    它是否正确?

    最佳答案

    如果您查看 ObservableCollection<T>使用 Reflector 的源代码,您可以看到针对两个属性引发了此事件:

    this.OnPropertyChanged("Count");
    this.OnPropertyChanged("Item[]");

    请注意 ObservableCollection<T>实现 INotifyPropertyChanged明确的,所以你可以访问 PropertyChanged事件仅通过 INotifyPropertyChanged多变的 :
    INotifyPropertyChanged inpc = myObservableCollection;
    inpc.PropertyChanged += myEventHandler;

    关于wpf - 在 ObservableCollection 上实现 INotifyPropertyChanged 的​​目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1936480/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com