Установка динамической высоты строки в сетке - PullRequest
1 голос
/ 25 июня 2011

У меня есть сетка, где я хочу две строки, так что нижняя строка имеет высоту 52 пикселя, а высота верхней строки занимает оставшееся пространство. Например, если высота сетки составляет 100 пикселей, верхняя строка - 48 пикселей, а нижняя строка - 52 пикселя.

Высота сетки гарантированно составляет не менее 53 пикселей. В настоящее время мой код XAML выглядит так:

<Grid Height="{TemplateBinding Height}">
    <Grid.RowDefinitions>
        <RowDefinition Height="*"></RowDefinition>
        <RowDefinition Height="52"></RowDefinition>
    </Grid.RowDefinitions>

    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="0.5*"></ColumnDefinition>
        <ColumnDefinition Width="0.5*"></ColumnDefinition>
    </Grid.ColumnDefinitions>

    <TextBlock Grid.Row="0" Grid.Column="0">Upper</TextBlock>
    <TextBlock Grid.Row="0" Grid.Column="1">Upper</TextBlock>

    <StackPanel Grid.Row="1" Grid.Column="0" Background="#1CFFFFFF">
        <TextBlock>Lower</TextBlock>
    </StackPanel>

    <StackPanel Grid.Row="1" Grid.Column="1" Background="#1CFFFFFF">
        <TextBlock>Lower</TextBlock>
    </StackPanel>
</Grid>

Проблема в том, что для отображения текстовых блоков в верхнем ряду требуется только один дополнительный элемент, а панели StackPanel в нижнем ряду растягиваются, чтобы заполнить высоту сетки. Это часть пользовательского элемента управления, поэтому высота сетки устанавливается как {TemplateBinding Height}.

И мне нужно, чтобы содержимое нижнего ряда было StackPanels.

Попытки с моей стороны, которые не сработали:

  1. Установка высоты нижних стековых панелей равной 52.
  2. Попытка различных значений для параметра Orientation в StackPanel [хотя, не знаю, почему я это сделал].
  3. Установка MaxHeight, MinHeight как 52 на 2 RowDefinition.

Любая помощь приветствуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...