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。
我知道 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。