Разметка внутри DockPanel - PullRequest
1 голос
/ 12 марта 2012

Привет, я пытаюсь сделать макет приложения в док-панели. У меня есть относительно более широкая Сетка слева и узкая Сетка справа. Я хочу, чтобы правая сетка фиксированной ширины, но левая увеличивалась при изменении размера моего главного окна. Вот мой XAML:

<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d"
x:Class="WebSpark.MainWindow"
x:Name="Window"
Title="MainWindow"
Width="640" Height="480">

<DockPanel x:Name="LayoutRoot" Background="#FF474747" LastChildFill="True">
    <Grid DockPanel.Dock="Top" Height="23" Background="#FFEF1212"  />
    <Grid DockPanel.Dock="Top" Height="23" Background="#FFF7E30D"  />
    <Grid DockPanel.Dock="Left" Background="#FF0A38F1" MinHeight="396" Width="{Binding ElementName=LayoutRoot,Path=ActualWidth}" MaxWidth="428"  />
    <Grid DockPanel.Dock="Right" HorizontalAlignment="Right" Width="198" />
</DockPanel>    

Вот поведение. Восстановленное окно: http://s17.postimage.org/tk1pov6b3/Restored.png Развернутое окно: http://s9.postimage.org/457s5r23j/Maximized.png

Как вы можете видеть в развернутом окне, синяя панель должна была растягиваться, но это не так. Что здесь не так? Пожалуйста помоги. Спасибо.

1 Ответ

0 голосов
/ 22 марта 2012

Воспользуйтесь преимуществом LastChildFill = "True". Этот код гарантирует, что серый ящик имеет фиксированный размер, а синий - переменный.

<DockPanel x:Name="LayoutRoot" Background="#FF474747" LastChildFill="True">
    <Grid DockPanel.Dock="Top" Height="23" Background="#FFEF1212"  />
    <Grid DockPanel.Dock="Top" Height="23" Background="#FFF7E30D"  />
    <Grid DockPanel.Dock="Right" HorizontalAlignment="Right" Width="198" />
    <Grid DockPanel.Dock="Left" Background="#FF0A38F1" MinHeight="396" />
</DockPanel>  
...