WPF: WrapPanel в ItemsPanelTemplate разворачивает ширину списка

Мне определили поле списка как это:

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

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

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

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

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

6
задан Hallgeir 2 July 2010 в 12:21
поделиться

2 ответа

Установить ScrollViewer.HorizontalScrollBarVisibility = "Disabled" и WrapPanel будет переноситься.

<Grid>
    <ListBox
        ScrollViewer.HorizontalScrollBarVisibility="Disabled">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel />
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
    </ListBox>
</Grid>
17
ответ дан 8 December 2019 в 13:43
поделиться

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

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

0
ответ дан 8 December 2019 в 13:43
поделиться
Другие вопросы по тегам:

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