ObservableCollection 是如何工作的?

发布于 2024-09-16 07:09:22 字数 171 浏览 4 评论 0原文

我正在查看 ObservableCollection 代码(感谢出色的 .NET Reflector),并惊讶地发现 Add 和 Remove 方法没有被重写。那么 ObservableCollection 如何引发 PropertyChanged 或 CollectionChanged 事件以在添加或删除某些内容时发出通知?

I was having a look at the ObservableCollection code (thanks to the awsome .NET Reflector) and was surprised to find that the Add and Remove methods are not overriden. How then does ObservableCollection raise the PropertyChanged or CollectionChanged event to notify when something is added or removed?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

伪装你 2024-09-23 07:09:22

它重写了基 Collection的一堆受保护方法。类,例如 InsertItem(int index, T item)、RemoveItem(int index) 等。

这些覆盖专门引发事件:

protected override void InsertItem(int index, T item)
{
    this.CheckReentrancy();
    base.InsertItem(index, item);
    this.OnPropertyChanged("Count");
    this.OnPropertyChanged("Item[]");
    this.OnCollectionChanged(NotifyCollectionChangedAction.Add, item, index);
}

It overrides a bunch of protected methods of the base Collection<T> class, e.g. InsertItem(int index, T item), RemoveItem(int index), etc.

These overrides specifically raise the events:

protected override void InsertItem(int index, T item)
{
    this.CheckReentrancy();
    base.InsertItem(index, item);
    this.OnPropertyChanged("Count");
    this.OnPropertyChanged("Item[]");
    this.OnCollectionChanged(NotifyCollectionChangedAction.Add, item, index);
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文