【问题标题】:Fill StackPanel inside DockPanel在 DockPanel 中填充 StackPanel
【发布时间】:2013-02-26 08:26:10
【问题描述】:

这应该很简单:如何在 DockPanel 内拉伸 StackPanel,以便它填充整个父级的内容并保持它的 Horizo​​ntalAlignment?

例子:

<DockPanel LastChildFill="True">
    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Background="Yellow">
        <Button Height="30">Button1</Button>
        <Button Height="30">Button2</Button>
    </StackPanel>
</DockPanel>

在此示例中,StackPanel 的宽度与两个按钮的组合宽度相同(此处的背景为黄色),但 DockPanel 中的剩余空间保持白色。看起来 LastChildFille 属性在我的示例中不起作用。

【问题讨论】:

    标签: c# wpf stackpanel dockpanel


    【解决方案1】:

    我认为通过在 StackPanel 上将 HorizontalAligment 设置为 Center,您将覆盖 DockPanel 的行为,以使用 StackPanel 填充整个空间。

    当我正确理解您的问题时,您希望整个空间为黄色,并且带有按钮的堆栈面板位于中间。然后你应该将 StackPanel 包装在一个 Grid 中。

    <DockPanel LastChildFill="True">
      <Grid Background="Yellow">
        <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
          <Button Height="30">Button1</Button>
          <Button Height="30">Button2</Button>
        </StackPanel>
      </Grid>
    </DockPanel>
    

    【讨论】:

    • 完全正确。另一种选择是在按钮上设置HorizontalAlignment,尽管那样它们不一定是彼此相同的宽度,这可能是不受欢迎的。
    • 在这种情况下,我也可以将背景属性设置为 DockPanel。我的意图是为 StackPanel 创建一个背景样式,但这也应该可以工作......
    猜你喜欢
    • 1970-01-01
    • 2010-11-21
    • 2011-05-20
    • 2016-08-13
    • 2013-11-25
    • 1970-01-01
    • 2015-04-06
    • 1970-01-01
    • 2016-12-02
    相关资源
    最近更新 更多