DockPanel children 元素的顺序背后的逻辑是什么

What is the logic behind The order of DockPanel children elements

我知道 DockPanel children 元素的顺序很重要。我在某处读到 child 的布局是根据所有先前的 children 已经定位后剩下的可用 space 确定的。因此,例如对于这段代码:

<DockPanel>
    <Button DockPanel.Dock="Bottom" Height="20" Content="MyButton"/>
    <DataGrid Name="dataGrid" ItemsSource="{Binding CarList.Items}"/>
</DockPanel>

我得到的结果如下图所示,我的按钮按预期停靠在底部

现在,如果我像这样更改 children 元素的顺序:

<DockPanel>
    <DataGrid Name="dataGrid" ItemsSource="{Binding CarList.Items}"/>
    <Button DockPanel.Dock="Bottom" Height="20" Content="MyButton"/>
</DockPanel>

布局变得奇怪:

不管我的 Button 使用可用的 space 左边这一事实,至少它不应该停靠到这个 space 的底部吗?

您没有考虑 DockPanel LastChildFill 属性。如您所见:

true if the last child element stretches to fill the remaining space; otherwise false. The default value is true.

总之你可以找到好的教程here