元素以stackpanel的中心开始

时间:2011-08-05 20:53:08

标签: c# .net wpf

如何将元素插入堆叠面板,它们从中心开始定位? 像这样:

| _ _ x _ _ |

| _ x x _ _ |

| _ x x x _ |

“x”是元素,“_”是空格。

是否已经实施了某些内容?

4 个答案:

答案 0 :(得分:26)

您可以将元素包装在Grid

<Grid Width="720">
  <StackPanel HorizontalAlignment="Center" Orientation="Horizontal" Width="Auto" >
    <!-- elements go here -->
  </StackPanel>
</Grid>

在我看来,这是最简单的方法。 您还需要确保StackPanel的宽度=“自动”和网格的宽度=“720”(根据需要为某个固定值)。

答案 1 :(得分:1)

将元素包含在HorizontalAlignment设置为Stretch的元素中,例如:

<StackPanel>
  <Border HorizontalAlignment="Stretch">
    <TextBlock Text="something short" HorizontalAlignment="Center"/>
  </Border>
  <Border HorizontalAlignment="Stretch">
    <TextBlock Text="something a bit longer" HorizontalAlignment="Center"/>
  </Border>
  <Border HorizontalAlignment="Stretch">
    <TextBlock Text="something more than a bit longer" HorizontalAlignment="Center"/>
  </Border>
</StackPanel>

答案 2 :(得分:0)

它取决于您添加到StackPanel的元素,但通常会查找以下内容:确保每个元素都将Horizo​​ntalAlignment设置为Stretch(因此它们跨越整个宽度),然后将Horizo​​ntalContentAlignment设置为中心。

答案 3 :(得分:0)

<StackPanel>
  <StackPanel HorizontalAlignment="Center" Orientation="Horizontal">
    <!-- element x -->
  </StackPanel>
  <StackPanel HorizontalAlignment="Center" Orientation="Horizontal">
    <!-- element x -->
    <!-- element x -->
  </StackPanel>
  <StackPanel HorizontalAlignment="Center" Orientation="Horizontal">
    <!-- element x -->
    <!-- element x -->
    <!-- element x -->
  </StackPanel>
<StackPanel>

这会产生你给出的例子。