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

StackOverflow https://stackoverflow.com/questions/1401656

  •  05-07-2019
  •  | 
  •  

Вопрос

Я хотел бы сделать 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top