我有一個綁定到集合的列表框。我希望列表框始終顛倒項目的順序。這個處理程序 - 連接到控件的加載事件 - 用於初始加載,但以後不加載。我曾嘗試使用SourceUpdated事件,但似乎沒有工作。如何保持數據綁定列表逆向排序
我該如何保持恆定的主動排序?
MyList.Items.SortDescriptions.Add(New SortDescription("Content", ListSortDirection.Descending))
我有一個綁定到集合的列表框。我希望列表框始終顛倒項目的順序。這個處理程序 - 連接到控件的加載事件 - 用於初始加載,但以後不加載。我曾嘗試使用SourceUpdated事件,但似乎沒有工作。如何保持數據綁定列表逆向排序
我該如何保持恆定的主動排序?
MyList.Items.SortDescriptions.Add(New SortDescription("Content", ListSortDirection.Descending))
集合被存儲方式供應爲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>
和排序順序將保持不變。
如果你的源集合是List<T>
或沒有實現INotifyCollectionChanged
一些其他的收藏,有沒有辦法時,將產品添加WPF可以檢測。您需要使用實現INotifyCollectionChanged
的集合,如ObservableCollection<T>
。
另外,你的集合中的項目需要實現INotifyCollectionChanged
,以便對項目的變化考慮在內
我認爲我們在esri控件中有一個bug。圖層集合是一個ObservableCollection,但它沒有正確實現INotifyCollectionChanged – Douglas 2010-08-12 13:49:41
我想你可以嘗試用一個香草ObservableCollection替換你的控件,看看問題是否消失。如果是這樣,那麼看起來你的esri控制可能有問題。 – 2010-08-12 15:19:40