Изменение размера содержимого списка в соответствии с размерами списка - PullRequest
3 голосов
/ 24 февраля 2010

Я пытаюсь изменить размер содержимого моего списка в соответствии с самим списком. Это делается в WPF.

Есть идеи, как это возможно?

1 Ответ

5 голосов
/ 24 февраля 2010

Я предполагаю, что когда вы говорите «изменить размер», вы имеете в виду, что вы хотите растянуть элементы в обоих направлениях. Чтобы взять ListBox по умолчанию и растянуть элементы по горизонтали, все что вам нужно:

<ListBox HorizontalContentAlignment="Stretch"/>

По умолчанию установлено значение Left, поэтому все элементы ListBoxItems в конечном итоге сдвигаются влево и имеют индивидуальный размер в зависимости от их содержимого.

Вертикальное растяжение требует избавления от StackPanel, используемой для разметки элементов, поскольку у него нет концепции изменения размера своих дочерних элементов в направлении ориентации. Простейшая вещь, которую можно использовать, - это UniformGrid, но вы можете захотеть что-то более нестандартное в зависимости от того, как вы хотите, чтобы элементы имели размер относительно друг друга. Вам также нужно будет сделать то же самое с параметром VerticalContentAlignment (по умолчанию Центр). Итак, вот тот, который растянет предметы в обе стороны:

<ListBox HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch">
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <UniformGrid Columns="1"/>
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
</ListBox>
...