Это происходит потому, что для LastChildFill
свойства DockPanel
по умолчанию установлено значение true
.Для желаемого результата, установите его на false
.
Согласно MSDN
:
Если для свойства LastChildFill установлено значение true, то естьпо умолчанию последний дочерний элемент DockPanel всегда заполняет оставшееся пространство независимо от любого другого значения дока, которое вы установили в последнем дочернем элементе.Чтобы закрепить дочерний элемент в другом направлении, необходимо установить для свойства LastChildFill значение false, а также указать явное направление закрепления для последнего дочернего элемента.
Пример пользовательского интерфейса и XAML с использованием DockPanel:
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" WindowTitle="DockPanel Sample">
<DockPanel LastChildFill="True">
<Border Height="25" Background="SkyBlue" BorderBrush="Black" BorderThickness="1" DockPanel.Dock="Top">
<TextBlock Foreground="Black">Dock = "Top"</TextBlock>
</Border>
<Border Height="25" Background="SkyBlue" BorderBrush="Black" BorderThickness="1" DockPanel.Dock="Top">
<TextBlock Foreground="Black">Dock = "Top"</TextBlock>
</Border>
<Border Height="25" Background="LemonChiffon" BorderBrush="Black" BorderThickness="1" DockPanel.Dock="Bottom">
<TextBlock Foreground="Black">Dock = "Bottom"</TextBlock>
</Border>
<Border Width="200" Background="PaleGreen" BorderBrush="Black" BorderThickness="1" DockPanel.Dock="Left">
<TextBlock Foreground="Black">Dock = "Left"</TextBlock>
</Border>
<Border Background="White" BorderBrush="Black" BorderThickness="1">
<TextBlock Foreground="Black">This content will "Fill" the remaining space</TextBlock>
</Border>
</DockPanel>
</Page>
![XAML Sample](https://i.stack.imgur.com/prjBn.png)
Если вы не хотите использовать вышеуказанное поведение, установите LastChildFill = "False" в приведенном выше примере XAML и просмотрите результат.