【问题标题】:What does it mean to "refresh" an ObservableCollection, as stated in the documentation?如文档中所述,“刷新” ObservableCollection 是什么意思?
【发布时间】:2020-04-02 16:41:30
【问题描述】:

ObservableCollection.CollectionChanged Event 的文档指出:

“在添加、删除、更改、移动或整个项目时发生 列表已刷新。”

ObservableCollection 说了同样的话。)

“刷新”是什么意思?

在 ObservableCollection 上没有“Refresh()”方法,也没有任何听起来可以做到这一点的方法。在我能找到的此类文档的其他任何地方都没有使用“刷新”这个词。

同样,它的基类Collection 也没有。

起初,我在设想一种方法,它可以手动引发INotifyCollectionChanged 事件或类似事件,用于您实际上并未从集合中添加/删除的情况。但是没有明显的方法可以做到这一点。

同样,即使the reference source code for this class 只在评论标题中提到“刷新”,其他地方都没有。

文档不正确吗?还是我错过了一些关于如何“刷新”ObservableCollection 对象的微妙之处?

【问题讨论】:

  • 它可能意味着除“添加、删除、更改、移动”之外的任何其他内容,例如用其他元素的集合原子替换所有元素 - ObservableCollection 不支持,但其他 INotifyCollectionChanged 实现可能支持。另见NotifyCollectionChangedAction.Reset

标签: .net wpf observablecollection


【解决方案1】:

希望这段代码对你有用。

public class CustomObservableCollection<T> : ObservableCollection<T>
{
        public void Refresh()
        {
            for (var i = 0; i < this.Count(); i++)
                this.OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
        }
}

【讨论】:

    【解决方案2】:

    也许是这个?

    public class CustomObservableCollection<T> ;
    {
            public void Refresh();
            {
                for (var i = 0; i < this.Count(); i++)
                    this.OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
            }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-02-23
      • 1970-01-01
      • 2013-02-09
      • 1970-01-01
      • 2015-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多