У меня есть собственный элемент управления ListBox, который я бы хотел настроить в соответствии с размером его ItemsPanel. Для панели элементов у меня есть настраиваемый элемент управления WrapPanel, который соответствующим образом упорядочивает элементы. Как вы можете видеть на снимке экрана, ListBox предпочитает определять размер своего родительского элемента управления или доступного размера.Сделать размер ListBox подходящим для ItemsPanel, используемого как его ItemsPresenter
Итак, я попытался создать настраиваемую сетку управления, у которой было свойство ItemsSource, которое передало элементы в свой список. Но это тоже не сработало. Когда Grid будет устраивать, ListBox будет организовывать, что приведет к упорядочению сетки и так далее.
Итак, мой вопрос: как создать пользовательский элемент управления, обладающий свойством ItemsSource и ItemsPresenter, который сам по размеру соответствует своим детям?
Это не выход. Видите ли, ListBox по-прежнему укладывается в окно. Затем WrapPanel устраивает своих детей. Я хочу, чтобы ListBox хорошо вписывался в свою собственную ItemsPanel, которая уже определила ее размер. –
+1 Это правильный ответ. «ListBox» заполняет панель контейнера. Вы должны выровнять его внутри своего родителя, используя 'HorizontalAlignment' и' VerticalAlignment' –
@Jesse: В этом случае это не так. Пропуск двойной макеты измеряет и упорядочивает верхний контейнер на основе размера, возвращаемого всеми дочерними элементами. На скриншоте, который я опубликовал, Window backgroudn является белым, тогда как Backbox в Listbox является красным. Я установил разницу, чтобы сделать ее видимой. Вы можете видеть, что ListBox занял только пространство, необходимое для панели обертки. Если вы попытались установить высоту или ширину оберточной панели, ListBox не будет принимать больше. – Sisyphe