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

时间:2015-05-19 13:00:37

标签: wpf user-interface wpf-controls dockpanel

我知道DockPanel子元素的顺序很重要。我已经读过某个地方,孩子的布局是根据所有以前的孩子已经定位后留下的可用空间来确定的。例如,对于这段代码:

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

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

enter image description here

现在,如果我更改子元素的顺序如下:

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

布局得到了应用:

enter image description here

无论我的Button使用剩余的可用空间这一事实,至少它是否应停靠在此空间的底部?

1 个答案:

答案 0 :(得分:3)

您没有考虑DockPanel LastChildFill属性。你可以读到:

  

如果最后一个子元素伸展以填充剩余空间,则为true;   否则是假的。默认值为true。

无论如何,你可以找到一个好的教程here