WPF: WrapPanel в ItemsPanelTemplate расширяет ширину списка - PullRequest
6 голосов
/ 02 июля 2010

У меня есть список, определенный следующим образом:

    <ListBox.ItemTemplate>
        <DataTemplate>
            <ItemsControl>
                <!-- Contents here -->
            </ItemsControl>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

Моя проблема заключается в следующем: этот список содержится в элементе управления сеткой и должен использовать все доступное пространство этой ячейки, в которой он содержится, но он не должен заставлять родителя выделять БОЛЬШЕ места. Но происходит то, что, как только заполняющая панель заполняется, вместо фактического переноса элементов на следующую строку (как это и должно быть), она просто расширяет ширину списка и в этом случае принудительно изменяет размер родительской сетки.

Как заставить панель обтекания соответствовать размеру ее родительского элемента и не заставлять ее увеличивать размер?

Заранее спасибо!

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

Ответы [ 4 ]

17 голосов
/ 02 июля 2010

Установите ScrollViewer.HorizontalScrollBarVisibility="Disabled" и WrapPanel обернет.

<Grid>
    <ListBox
        ScrollViewer.HorizontalScrollBarVisibility="Disabled">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel />
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
    </ListBox>
</Grid>
0 голосов
/ 23 февраля 2016

Обычно он не будет переноситься, как вы ожидаете, пока вы не установите горизонтальную полосу прокрутки в отключенное состояние. Теперь у вас есть обертка, которая на самом деле оборачивается :)

ScrollViewer.HorizontalScrollBarVisibility="Disabled"
0 голосов
/ 30 апреля 2014

Я имел дело с этой проблемой в режиме разработки (Blend и VS 2013), и она не была перенесена до тех пор, пока я не добавил некоторое время проектирования на страницу:

d: DesignHeight = "300" d: DesignWidth= "600"

0 голосов
/ 07 июля 2010

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

Спасибо за ваш ответ, это очень помогло в решении этой проблемы.

...