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