WPF Как установить максимальное количество результатов из CollectionViewSource - PullRequest
5 голосов
/ 16 декабря 2009

Я пытаюсь отобразить набор данных, используя DataTemplate в ItemsControl, с ItemsPanel, установленным как единая сетка размером 3 x 3. ItemsSource из ItemsControl установлено привязать к CollectionViewSource, который фильтрует исходную коллекцию на основе поискового запроса. Это все отлично работает.

Список, к которому я привязан, имеет произвольный размер, но я хочу, чтобы отображались только 9 результатов, но я не могу на всю жизнь решить, как:
а) ограничить CollectionViewSource для вывода первых 9 элементов
б) ограничить UniformPanel только 3х3 и никогда не создавать новые строки
c) ограничьте ItemsControl, чтобы разрешить создание только 9 шаблонов данных одновременно.

Я действительно почесал голову, потому что уверен, что это обычный сценарий привязки данных, но я не могу найти в Интернете ничего об этом.

Ответы [ 3 ]

4 голосов
/ 16 декабря 2009

Два решения, которые я могу придумать:

Если вы используете View Model, поместите туда логику, чтобы создать свойство, к которому вы можете привязать, которое имеет только 9 элементов. Удостоверьтесь, что он проверен модулем, чтобы убедиться, что более 9 элементов никогда не попадут в коллекцию.

В качестве альтернативы вы можете использовать конвертер при привязке источника элементов для преобразования полного списка в сокращенный список первых 9.

2 голосов
/ 16 декабря 2009

Это только одна из тех вещей, которые вы не можете сделать в XAML (пока).

Вы можете создать «CollectionViewSourceView» (: P), который будет обновляться при каждом обновлении CollectionViewSource, чтобы выводить только первые 9 элементов. Тем не менее, это входит в код (или, точнее, в модель представления).

1 голос
/ 16 декабря 2009

Я собирался сказать то же самое, что и Джеймс Хэй (используйте конвертер), но я также добавил бы, что вы можете привязать параметр ConverterParameter в XAML, чтобы динамически указывать, сколько элементов возвращается.

...