所以我有一個ListView
控制支持ObservableCollection<>
定期獲取項目添加到它。不過,我只想最多顯示前10項;即如果最多有10個項目顯示它們全部,則相應地調整大小,並且如果有多於10個項目則停止在第10個項目上顯示它們。限制在WPF中顯示項目的數量ListView
我想知道是否有合理的方法來做到這一點,因爲我目前的直覺是有第二個集合反映了ItemsSource的前10個項目,因此進行了更新。
所以我有一個ListView
控制支持ObservableCollection<>
定期獲取項目添加到它。不過,我只想最多顯示前10項;即如果最多有10個項目顯示它們全部,則相應地調整大小,並且如果有多於10個項目則停止在第10個項目上顯示它們。限制在WPF中顯示項目的數量ListView
我想知道是否有合理的方法來做到這一點,因爲我目前的直覺是有第二個集合反映了ItemsSource的前10個項目,因此進行了更新。
你可以做這樣的事情(我沒有測試它,但你可能得到的想法):
_defaultView = CollectionViewSource.GetDefaultView(YourCollection);
_defaultView.SortDescriptions.Add(new System.ComponentModel.SortDescription(".", System.ComponentModel.ListSortDirection.Ascending));
_defaultView.Filter = o =>
{
int index = YourCollection.OrderBy(s => s).ToList().IndexOf(o as string);
return index >= 0 && index < 10;
};
_defaultView.Refresh();
相反的另一資源集合,有什麼瞭解如何過濾收集只顯示前10個項目? – Pikoh
我不確定我會如何去做。我需要維護底層的集合,所以我害怕我不知道如何綁定ListView的ItemsSource,或者如何過濾它的ItemsSource。 –
[@Pikoh](http://stackoverflow.com/a/39016120/5177728)的想法是正確的,還有不錯的[文章](http://www.wpf-tutorial.com/listview-control/ listview-filtering /)與過濾示例。 – Sam