Исправление размера списка в WPF - PullRequest
0 голосов
/ 24 марта 2011

У меня есть список, который находится внутри сетки, которая находится внутри пользовательского элемента управления. Этот пользовательский элемент управления находится на панели вкладок, размер которой можно изменить.

Список определен как:

<ListBox HorizontalAlignment="Left" Margin="12,42,12,12" Name="listBox1" VerticalAlignment="Top" >

Это прекрасно работает, пока мой список заполнен. Когда он не заполнен, это квадрат около 4 пикселей в ширину / высоту. Если он не полный, он сжимается, чтобы вместить все, что в нем есть.

Это не то, что я хотел бы. Я хотел бы, чтобы он всегда поддерживал поля, которые я определил. Мой вопрос состоит из двух частей:

1: Почему он ведет себя так, как он?

2: Как мне заставить его вести себя так, как я хочу?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 24 марта 2011

Поскольку вы помещаете это в Grid элемент управления, вы должны использовать его по назначению, создать строки и столбцы и поместить ListBox в правильные ячейки.

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="42" />
        <RowDefinition />
        <RowDefinition Height="12" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="12" />
        <ColumnDefinition />
        <ColumnDefinition Width="12" />
    </Grid.ColumnDefinitions>

    <ListBox x:Name="listBox1"
             Grid.Row="1" Grid.Column="1">
    </ListBox>
</Grid>
2 голосов
/ 24 марта 2011

Он поддерживает поля, но поля находятся вне самого списка, поэтому изменяйте только расположение списка относительно его контейнера.

Я не уверен, как бы вы хотели, чтобы он выглядел, но мог бы установить минимальную ширину / высоту.

<ListBox HorizontalAlignment="Left" Margin="12,42,12,12" 
   Name="listBox1" MinHeight="10" MinWidth="100" VerticalAlignment="Top" />

или просто удалите настройки выравнивания

<ListBox Margin="12,42,12,12" Name="listBox1"  />

, если вы хотите, чтобы список заполнял свой контейнер.

...