WPF <StatusBar>未位于窗口底部

8
我们有一个WPF可执行文件,创建了一个TabControl并动态加载了几个程序集。每个程序集代表一个在选项卡中显示的屏幕(.xaml)。问题是TabControl位于窗口顶部而不是底部。如何强制TabControl始终位于窗口底部?谢谢!
UserControl    
    DockPanel
        CheckBox 
        StatusBar
    DockPanel
UserControl
7个回答

15

除了ArsenMkrt提到的包含DockPanel.Dock="Bottom"属性的答案外,不要忘记在DockPanel中,最后一个元素会填充整个区域,除非你使用高度命令显式地指定它(无论提供了哪个DockPanel.Dock属性)。

我的建议是这样做:

<UserControl>
   <DockPanel>
     <StatusBar DockPanel.Dock="Bottom" />
     <CheckBox />
   </DockPanel>
</Usercontrol>

2
关于您在最后一个元素上的评论,您还可以在DockPanel上设置LastChildFill属性。 - kenwarner
@qntmfred - 你说得对。我忘记了那个属性,主要是因为我通常希望最后一个子元素填充。 - Stephen Wrighton

8

我刚才也遇到了同样的问题。感谢 Stephen Wrighton 的提示,最后一个添加到 DockPanel 中的元素会填充剩余的区域,我知道如何设置我的 Window 了。虽然我最后加入的是 Grid,但它却处于中间位置,有点奇怪。

<Window>
    <DockPanel>
        <Menu DockPanel.Dock="Top">
            <MenuItem Header="_File">
            </MenuItem>
        </Menu>

        <StatusBar DockPanel.Dock="Bottom">
            <StatusBarItem Content="Filler" />
        </StatusBar>

        <Grid x:Name="rootGrid">

        </Grid>
    </DockPanel>
</Window>

2
在我的情况下,仅添加 DockPanel.Dock="Bottom" 是不够的,我还必须添加 VerticalAlignment="Bottom"
<StatusBar DockPanel.Dock="Bottom" VerticalAlignment="Bottom" />

1

你试过了吗?

<StatusBar DockPanel.Dock="Bottom" ... />

0
<Grid>
<Grid.RowDefinitions>
    <RowDefinition Height="*"/>
    <RowDefinition Height="Auto"/>
</Grid.RowDefinitions>

<DockPanel Grid.Row="0"/>

<StackPanel Grid.Row="1">
    <StatusBar>Status Text</StatusBar>
</StackPanel>


0
在我的情况下,我将子元素放入 Dockpanel 的顺序对结果产生了影响。因此,以下是正确的顺序以正确填充:
<Button DockPanel.Dock="Top" Height="50">Top</Button>
<Button DockPanel.Dock="Bottom" Height="50">Bottom</Button>
<Button DockPanel.Dock="Left" Width="50">Left</Button>
<Button DockPanel.Dock="Right" Width="50">Right</Button>

0

如果WPF中的StatusBar控件没有定位在窗口底部,则可能有几个潜在原因:

  1. StatusBar未放置在窗口的最底层容器内:确保StatusBar位于窗口的最底层容器内,例如Grid或StackPanel,并且它位于容器的最后一行。

  2. 容器的垂直对齐未设置为“Bottom”:确保包含StatusBar的容器的VerticalAlignment属性设置为“Bottom”。

  3. 窗口的高度未正确设置:确保窗口的高度被正确设置,并且足够大以容纳StatusBar的大小。

  4. 窗口的布局不正确:检查窗口的布局是否正确,所有元素是否正确定位。您可以使用Visual Studio Designer的Snapping和Guides功能来正确对齐元素。

  5. 窗口使用不包括StatusBar的模板,如果您正在为窗口使用自定义模板,请检查它是否包括StatusBar并且是否正确定位。

通过解决这些潜在的原因,您应该能够解决问题并将StatusBar定位在窗口底部。

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