【问题标题】:StackPanel in StatusBar won't stretchStatusBar 中的 StackPanel 不会拉伸
【发布时间】:2018-01-24 16:39:03
【问题描述】:

当我将 StackPanel 作为最后一个 StatusBarItem 添加到 StatusBar 时,它不会填满所有额外的空间。我想知道这是为什么,因为 StatusBar 在内部使用 DockPanel 作为 ItemsPanel。

这是一个示例代码:

<Window x:Class="Foo.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:Zadatak1"
    Title="MainWindow"
    WindowState="Maximized">
<DockPanel>
<StatusBar DockPanel.Dock="Bottom">
        <StatusBarItem DockPanel.Dock="Left" Background="SkyBlue">
            <Label>Status....</Label>
        </StatusBarItem>
        <StatusBarItem Background="Red" DockPanel.Dock="Right" HorizontalAlignment="Right">
            <StackPanel Orientation="Horizontal">
                <Label>Time:</Label>
                <Label>02:48:AM</Label>
            </StackPanel>
        </StatusBarItem>
    </StatusBar>
</DockPanel>

如果我更改元素的顺序,使 Label 排在第一位,StackPanel 排在第二位,它会按应有的方式填充额外的空间。

【问题讨论】:

    标签: wpf xaml layout statusbar stackpanel


    【解决方案1】:

    红色的StatusBarItem 没有填满空间,因为您将其HorizontalAlignment 属性设置为Right。如果要填充DockPanel,请将其更改为默认值Stretch

    StackPanel 确实按预期填充了StatusBarItem

    【讨论】:

    • 因此,如果它不是“拉伸”,即使它是 DockPanel 的最后一个孩子,它也不会填满所有可用空间?我一直认为最后一个孩子无论如何都会填满所有剩余的空间。
    • 显然不是。去掉 Horizo​​ntalAlignment="Right" 你会看到。
    • 是的,我已经尝试过了,它确实有效,只是让我感到惊讶的是它竟然可以这样工作。谢谢。
    猜你喜欢
    • 2013-04-16
    • 1970-01-01
    • 2012-11-30
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多