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



我正在尝试在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边距,但这没有区别。堆栈面板是此列中的唯一对象。

边框的默认水平对齐等于Stretch,因此它需要完全可能的宽度。 然后 StackPanel 在边框内居中,因为它有HorizontalAlignment="Center".

在"边框"上设置HorizontalAlignment="Center"。它将获得宽度,等于堆栈面板宽度(加上边距(,然后居中

我认为这是因为您将水平对齐设置为居中。这样做将使 StackPanel 的大小调整为其内容。

如果将边框移动到堆栈面板,您的问题将得到解决:)

在这里:

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

最新更新