在DockPanel中填充StackPanel

5
这很简单:如何将StackPanel放入DockPanel内并进行拉伸,以使其填充整个父容器内容,并保持其水平对齐方式不变?
示例:
<DockPanel LastChildFill="True">
    <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Background="Yellow">
        <Button Height="30">Button1</Button>
        <Button Height="30">Button2</Button>
    </StackPanel>
</DockPanel>

在这个例子中,StackPanel的宽度与两个按钮的宽度相同(这里的背景色是黄色),但是DockPanel中剩余的空间保持为白色。看起来在我的例子中LastChildFill属性没有起作用。
1个回答

3
我认为通过在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”,尽管这样它们不一定会与彼此具有相同的宽度,这可能是不希望看到的。 - Matthew Walton
在这种情况下,我也可以将背景属性设置为DockPanel。我的意图是为StackPanel创建一个背景样式,但这也可以起作用... - sventevit

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