所以我有一个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