为什么WPF边框显示在柱周围而不是StackPanel?

为什么WPF边框显示在柱周围而不是StackPanel?,wpf,xaml,Wpf,Xaml,我试图在StackPanel周围放置一个边框,如下所示: <Border CornerRadius="5" BorderBrush="#009999" Background="Transparent" BorderThickness="2" Grid.Column="2" Grid.Row="0"> <StackPanel HorizontalAlignment="Center" Margin="0,30,0,0"> &

我试图在StackPanel周围放置一个边框,如下所示:

<Border CornerRadius="5" BorderBrush="#009999" Background="Transparent" 
        BorderThickness="2" Grid.Column="2" Grid.Row="0">
      <StackPanel HorizontalAlignment="Center" Margin="0,30,0,0">
           <!--Contents-->
      </StackPanel>
</Border>


出于某种原因,边框出现在StackPanel所在的列周围,而不是StackPanel本身。我可以更改边框的边距,但如果屏幕调整大小,边距就不起作用。我也试着去掉StackPanel的边距,但没有什么不同。StackPanel是本栏中唯一的对象。

我认为这是因为您将水平对齐设置为中心。这样做将使StackPanel的大小与它的内容一致。

如果将边框移动到StackPanel,您的问题将得到解决:)

这是:

<Grid>
    <StackPanel Width="350" Height="200">
        <Border BorderThickness="2" BorderBrush="Black" Width="350" Height="200">
            <TextBlock>SomeText</TextBlock>
        </Border>
    </StackPanel>
</Grid>

一些文字

边框的默认水平对齐方式等于
拉伸
,因此它采用可能的全宽。 然后StackPanel在边框内居中,因为它具有
HorizontalAlignment=“Center”


在边框上设置
HorizontalAlignment=“Center”
。它将获得宽度,等于StackPanel宽度(加上边距),然后将居中

在边框上设置HorizontalAlignment=“Center”。默认情况下,是谁干的!如果你想把它作为一个答案发布,我会正确地标记它,谢谢!