WPF:DockPanel.Dock ="Bottom"无法按预期工作

Hol*_*and 2 wpf xaml dockpanel

这与WPF有关.

作为一个简单的测试,我有一个有3列的网格,第三列包含Dock面板.反过来,这个Dockpanel包含一个TextBlock和一个StatusBar,StatusBar具有(附加)属性Dockpanel.Dock ="Bottom".

因此,我希望StatusBar位于第3列的底部,TextBlock - 表示"我是TextBlock 3"的文本块 - 在它的顶部(在同一列中).

但令我惊讶的是,StatusBar出现在TextBlock的右侧!

这是相关的xaml代码(我没有代码隐藏):

<Window x:Class="Testing.TestWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Testing"
        mc:Ignorable="d"
        Title="TestWindow" Height="500" Width="1000">

    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" MinWidth="180" MaxWidth="540"  />
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

        <TextBlock Grid.Column="0">I am Textblock 1</TextBlock>

        <TextBlock Grid.Column="1">I am Textblock 2</TextBlock>

        <DockPanel Grid.Column="2">
            <TextBlock>I am Textblock 3</TextBlock>
            <StatusBar DockPanel.Dock="Bottom">I am the statusbar</StatusBar>
        </DockPanel>
    </Grid>

</Window>
Run Code Online (Sandbox Code Playgroud)

谁知道我做错了什么?谢谢.

d.m*_*ada 7

更新您的DockPanelLastChildFile="False"

  <DockPanel Grid.Column="2" LastChildFill="false">
Run Code Online (Sandbox Code Playgroud)

该属性默认情况下是真的,因为StatusBarLastChildDockPanel,你看你所遇到的行为.

来自docs的LastChildFill信息:

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