Изменение размера содержимого Listbox в соответствии с размерами Listbox

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

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


person Kyle    schedule 24.02.2010    source источник


Ответы (1)


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

<ListBox HorizontalContentAlignment="Stretch"/>

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

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

<ListBox HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch">
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <UniformGrid Columns="1"/>
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>
</ListBox>
person John Bowen    schedule 24.02.2010