【问题标题】:Item Control Modified Not Displayed Properly in WPF修改的项目控件在 WPF 中未正确显示
【发布时间】:2017-11-16 14:52:16
【问题描述】:

我有与 List 绑定的项目控件。当我尝试在该列表中添加一个项目时,它不会反映在项目控件 (UI) 中。但是当替换 Observable Collection 而不是 list 时,它工作得很好,请问这是什么原因,您能帮帮我吗?

有没有办法直接对 observable 集合进行排序?

【问题讨论】:

  • 这就是为什么有一个 ObservableCollection 类,通知 UI。
  • 你可以使用 ObservableCollection。如果要对可观察集合中的项目进行排序,请创建一个新的可观察集合:MyCollectionProp = new ObservableCollection<SomeClass>(MyCollectionProp.OrderBy(x => x.SomeProperty));MyCollectionProp 的设置器必须在其设置器中引发 PropertyChanged。
  • 您是否调查过 CollectionViewSource 以解决您的排序问题?

标签: c# wpf list sorting observable


【解决方案1】:

不同之处在于ObservableCollection<T> 类实现INotifyCollectionChanged 接口,并在添加和删除项目时引发CollectionChanged 事件。这是 UI 自动更新所必需的。 List<T> 没有实现这个接口。

有没有办法直接对 observable 集合进行排序?

对源集合本身进行排序的最简单方法是在创建它时将已排序的IEnumerable 传递给它:

this.Collection = new ObservableCollection<Type>(list.OrderBy(x => x.Property));

它没有内置的 Sort 方法在内部对项目进行排序。

【讨论】:

    猜你喜欢
    • 2020-12-11
    • 1970-01-01
    • 2013-07-22
    • 1970-01-01
    • 2012-09-11
    • 1970-01-01
    • 2021-12-08
    • 2016-02-20
    • 1970-01-01
    相关资源
    最近更新 更多