显示ICollectionView的前X项

时间:2013-11-07 14:49:30

标签: c# wpf filtering collectionviewsource collectionview

我有一个名为IcollectionView的{​​{1}}属性绑定到ListBox的Suggestions

我使用以下代码进行设置

ItemsSource

// Set up Suggestions collection for filtering purposes var collectionViewSource = new CollectionViewSource(); collectionViewSource.Source = SomeCollection; // SomeCollection is of type IEnumerable!! // Create view Suggestions = collectionViewSource.View; Suggestions.Filter = new Predicate<object>( item => item.ToString().StartsWith(SearchString, true, CultureInfo.CurrentCulture)) 绑定到TextBox的SearchString属性,每当更改触发重新过滤集合的Text时都会绑定。

这很有效,但会显示所有可用的项目。如何让它只显示前X项?

2 个答案:

答案 0 :(得分:1)

您是否只能将过滤器Predicate条件移至SomeCollection.Where子句?:

SomeCollection = SomeCollection.Where(item => item.ToString().StartsWith(
    SearchString, true, CultureInfo.CurrentCulture)).Take(10);
collectionViewSource.Source = SomeCollection;

答案 1 :(得分:-1)

将可见性与所有已过滤的项目相关联,并将仅对前X项目的可见性设置为true,或

首先过滤所有项目,然后将前x个项目放在另一个属性中并将其绑定到UI