WPF, Как установить максимальный объем результатов CollectionViewSource

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

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

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

5
задан Dave Clemmer 6 September 2011 в 17:26
поделиться

3 ответа

Я могу придумать два решения:

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

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

4
ответ дан 14 December 2019 в 08:52
поделиться

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

1
ответ дан 14 December 2019 в 08:52
поделиться

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

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

2
ответ дан 14 December 2019 в 08:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: