WPF упорядочивает элементы в сетке с помощью виртуализации - PullRequest
3 голосов
/ 20 января 2011

Я ищу способ представления элементов одинакового размера в фиксированном количестве строк и любом количестве столбцов. (Подумайте об iTunes или альбомном представлении Picasa. Я полагаю, что некоторые платформы называют это «gridview»)

A WrapPanel выполнит эту работу, но я связываюсь с очень большой коллекцией объектов, поэтому мне нужна виртуализация.

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

Можно ли упорядочить виртуализированные элементы с привязкой к данным в виде сетки (фиксированное количество строк) со стандартными компонентами WPF?

Ответы [ 3 ]

1 голос
/ 20 января 2011

Мне недавно приходилось устраивать поиски похожих функций, и я изо всех сил пытался найти что-нибудь готовое для производства.

Я нашел серию или статьи и пример кода, которые содержат панель виртуализации плитки

http://blogs.msdn.com/b/dancre/archive/tags/virtualizingtilepanel/

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

Однако одно важное предостережение заключалось в том, что он также ДОЛЖЕН иметь родителя, который ограничен ограниченным размером, иначе он допустит ошибку. Обычно это не проблема, так как вы хотите, чтобы ее размер был ограничен, чтобы вы могли включить прокрутку. Возможно, есть решение этой конкретной проблемы, но у нас не было времени для расследования. Мы только что привлекли его в качестве технического долга, поскольку на самом деле он не влияет на нас в его нынешнем виде.

1 голос
/ 10 января 2013

Быстрое решение состоит в том, чтобы использовать список (в вашем случае горизонтальный) «группирующих элементов» (в вашем случае вертикальных), который определит желаемое количество строк.Виртуализация будет происходить на «группировщиках».

0 голосов
/ 20 января 2011

Ответственность за обеспечение виртуализации лежит на Panel. К сожалению, фреймворк предоставляет только виртуализированную StackPanel:

http://msdn.microsoft.com/en-us/library/system.windows.controls.virtualizingpanel.aspx

Очень хороший пост в блоге, в котором представлена ​​виртуализированная WrapPanel:

http://blogs.claritycon.com/blog/2009/09/16/custom-panels-in-silverlight-wpf-part-4-virtualization/

Другой альтернативой является использование DataGrid, он будет виртуализирован для вас.

...