为什么设置DockPanel.Dock="Bottom"会将元素放在顶部?

17
以下代码会将两个文本元素放在顶部,即使第二个文本被标记为“底部”。背景颜色延伸到底部,因此DockPanel似乎会被拉伸到底部。
我对DockPanel的理解有什么问题?
<Window x:Class="TestIndexer934.Views.MainView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:c="clr-namespace:TestIndexer934.Commands"
    Title="Main Window" Height="400" Width="800">
    <DockPanel HorizontalAlignment="Left" Background="Beige">
        <TextBlock DockPanel.Dock="Top" Text="Testing top"/>
        <TextBlock DockPanel.Dock="Bottom" Text="Testing bottom"/>
    </DockPanel>
</Window>
1个回答

37

通过默认, DockPanel 的最后一个项将填充可用的剩余内容区域。

如果在 DockPanel 上设置 LastChildFill="False", 您将看到您期望的行为。您还可以在 TextBlock 上设置 VerticalAlignment="Bottom"


很可能是这种情况。请参见:http://msdn.microsoft.com/zh-cn/library/system.windows.controls.dockpanel.lastchildfill.aspx - Jonathan Fingland
谢谢,可以了。我记得看到那个属性,现在知道它的作用了。 - Edward Tanguay
因此,默认情况下会做与人们预期相反的事情。 - AriesConnolly

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接