WPF:DockPanel docked中的两个控件;Top";及;底部“;底部仍留有空间

WPF:DockPanel docked中的两个控件;Top";及;底部“;底部仍留有空间,wpf,dockpanel,Wpf,Dockpanel,我有一个简单的WPF用户控件,如下所示 我不明白为什么这个代码没有将绿色网格固定到DockPanel的底部: 如果我在两个块之间添加了一些内容,则绿色将固定在底部: 下面是简单的代码: <UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

我有一个简单的WPF用户控件,如下所示

我不明白为什么这个代码没有将绿色网格固定到DockPanel的底部:

如果我在两个块之间添加了一些内容,则绿色将固定在底部:

下面是简单的代码:

<UserControl
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:local="clr-namespace:tWorks.Alfa.OperatorClient.UserControls.Vehicles"
         xmlns:dxlc="http://schemas.devexpress.com/winfx/2008/xaml/layoutcontrol" x:Class="tWorks.Alfa.OperatorClient.UserControls.Vehicles.Misc_Vehicles_GpsTrackBarContext"
         mc:Ignorable="d" 
         d:DesignHeight="260" d:DesignWidth="450">
<DockPanel>
    <Grid DockPanel.Dock="Top" Height="50" Background="Red"></Grid>
    <Grid DockPanel.Dock="Bottom" Height="50" Background="Green"></Grid>
    <Grid Height="50" Background="Blue"></Grid>
</DockPanel>


谢谢=)

您需要防止最后一个孩子拉伸:

<DockPanel LastChildFill="False"/>


否则,最后一个子项的
DockPanel.Dock=“Bottom”
将被忽略,并将其放置在整个剩余区域中。因为它的
Height=“50”

谢谢,所以它将在那里对齐!不过,这是一种非常奇怪的行为。有人可能会想,原因是什么。。。“理由”是个大字。。。但是我希望WPF开发人员能够允许一个
DockPanel.Dock=“Fill”
,这样我们就不需要把filling元素放在最后,也不需要修改默认的标签顺序等等。。。我无法给出原因,只知道我自己是通过艰苦的方式学会的,所以现在回答别人的问题相对容易:)