Макет WPF с несколькими частями фиксированной высоты и определенными частями относительно размера окна - PullRequest
2 голосов
/ 15 июня 2010

В данный момент мой основной макет состоит из вертикально ориентированной панели стека и выглядит следующим образом:

Root StackPanel

  • StackPanel - фиксированная высота 150 (горизонтальная ориентация)

  • StackPanel - относительная высота должна указывать на количество свободного места на экране (но не менее 150 пикселей).Используется Telerik GridView Control, если я не указываю Height или MaxHeight. Telerik GridView Height становится очень большим и не умещается в моем окне.

  • StackPanel - фиксированная высота 100 (горизонтальная ориентация)

  • StackPanel - относительная высота должна составлять половину свободного места на экране (но не менее 150 пикселей).Используется Telerik GridView Control, если я не указываю Height или MaxHeight. Telerik GridView Height становится очень большим и не умещается в моем окне.

  • StackPanel - фиксированная высота 100 (горизонтальная ориентация)

Вид должен полностью соответствовать доступному размеру экрана.

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

Есть ли простой способ решить эту проблему, или мне нужно привязать свойство Window height и заняться математикой?

Большое спасибо!

1 Ответ

3 голосов
/ 15 июня 2010

У меня нет под рукой элементов управления telerik для тестирования, так что это не в моей голове - разве вы не можете использовать сетку в качестве основы для своего контроля, а не стековую панель, подобную этой? - если это все еще проблема, напишите немного кода, и мы посмотрим, чего вы пытаетесь достичь.

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="150"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="100"/>
            <RowDefinition Height="*" />
            <RowDefinition Height="100"/>            
        </Grid.RowDefinitions>
        <StackPanel Grid.Row="0" />
        <StackPanel Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"  />
        <StackPanel Grid.Row="2" />
        <StackPanel Grid.Row="3" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"  />
        <StackPanel Grid.Row="4" />
    </Grid>
...