我有一个绑定到集合的列表框。我希望ListBox始终反转项目的顺序。这个处理程序 - 连接到控件的加载事件 - 适用于初始加载,但不适用于此后。香港专业教育学院尝试使用SourceUpdated事件,但似乎没有用。
如何维持常量活动排序?
MyList.Items.SortDescriptions.Add(New SortDescription("Content", ListSortDirection.Descending))
答案 0 :(得分:0)
如果您的源集合是List<T>
或其他未实现INotifyCollectionChanged
的集合,则WPF无法检测何时添加项目。您需要使用实现INotifyCollectionChanged
的集合,例如ObservableCollection<T>
。
此外,您的收藏中的项目需要实施INotifyCollectionChanged
,以便考虑对项目的更改
答案 1 :(得分:0)
如何存储为ListBox提供项目的集合?它应该是支持INotifyCollectionChanged
的集合。该框架提供了您可以使用的ObservableCollection<T>
。
在ViewModel的构造函数中(或集合所在的任何位置),然后获取DefaultView以添加SortDescription
。 CollectionView
就像集合顶部的一个层,您可以使用它来对项目进行排序,分组,过滤等,而不会实际影响基础数据源。框架为您创建一个默认的框架。要获得对它的引用,可以使用类似于以下内容的代码:
var collectionView = CollectionViewSource.GetDefaultView(Widgets);
if(collectionView == null)
return;
collectionView.SortDescriptions.Add(new SortDescription("Content", ListSortDirection.Descending));
有了这些,您应该能够将项目添加到ObservableCollection<T>
,并且将保留排序顺序。