Я хотел бы сделать функцию ListBox
похожей на Grid
. Каждый раз, когда добавляется новый элемент, он должен выглядеть как новый GridRow
(с высотой звезды). Таким образом, если есть два элемента, каждый из них займет половину доступного пространства. В какой-то момент строка Grid
будет меньше, чем элементы MinHeight
, в этот момент Grid
развернется, и содержащийся ScrollViewer может сработать.
Вы увидите это поведение с сеткой внутри ScrollViewer
. Однако мне нужно, чтобы это работало с ListBox
, чтобы я мог просто установить ItemsSource
, создать DataTemplate
и двигаться дальше.
Проблема со значением по умолчанию ListBox
ItemsPanel
заключается в том, что он не позволит моему первому элементу развернуться, чтобы заполнить все доступное пространство.
UPDATE:
Вот код, чтобы заставить его работать:
<ListBox VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" Width="Auto" Height="Auto">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="1"></UniformGrid>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>