Изменить способ отображения элементов списка WPF - PullRequest
4 голосов
/ 09 октября 2009

У меня есть окно WPF, которое отображает ListBox. Я изменил шаблон элемента ListBox, чтобы в списке отображались прямоугольные элементы, которые можно выбрать.

Теперь я бы хотел изменить ListBox ItemsPanelTemplate, чтобы элементы отображались в виде сетки вместо вертикального или горизонтального списка. В частности, я бы хотел, чтобы первый элемент находился в верхнем правом углу ListBox, а затем второй элемент под ним и третий под ним, пока высота следующего элемента не сделает столбец элементов выше высоты ListBox сама. В этот момент он должен начинать второй столбец непосредственно справа от первого добавленного элемента. Если общая ширина всех объединенных столбцов превышает ширину ListBox, то должна появиться горизонтальная полоса прокрутки.

Есть ли способ получить этот эффект, просто изменив ItemsPanelTemplate или мне нужно расширить сам класс ListBox? В любом случае, как бы я об этом?

Спасибо за вашу помощь!

1 Ответ

4 голосов
/ 10 октября 2009

Я не проверял это, но я подозреваю, что вы можете получить желаемый эффект путем замены панели по умолчанию, используемой ListBox на WrapPanel:

<ListBox>
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel Orientation="Vertical"/>
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
</ListBox>
...