当我尝试将其添加到TextBlockC时,将边框添加到整个网格#

时间:2018-01-08 13:48:21

标签: c# xaml

我尝试仅向TextBlock添加边框,而是在整个网格周围创建边框。这是代码:

<Border BorderBrush="Black" BorderThickness="6">
    <TextBlock x:Name="txtInputUsername" HorizontalAlignment="Left" Margin="65,54,0,0" TextWrapping="Wrap" Text="Username" VerticalAlignment="Top" TextAlignment="Center" FontFamily="Open Sans" FontSize="20" Background="#FFF3F3F3" OpacityMask="Black"/>
</Border>

1 个答案:

答案 0 :(得分:0)

这种情况正在发生,因为Grid的子元素将假定它们被放置在Height(或Width单元格的GridGrid在,除非另有说明。 Border只是看起来就像它绕着网格一样,因为它正在使用它来推断它的大小。

有几种方法可以解决此问题,最简单的方法是指定HorizontalAlignmentVerticalAlignment的{​​{1}}和Border。这会导致Center围绕Border的边界而不是推断其大小。

在你的情况下,由于你使用TextBlock来定位标签,它仍会产生一些奇怪的结果。 Margin仍被视为控件的一部分,因此控件周围的任何内容都必须更大才能容纳它。如果可能的话,你应该避免这种情况,但如果真的希望这样做,那么Margin更多地Margin

Border

Screenshot

更好的方法是,要了解不同的layout containers,以及如何使用它们来定位控件,而不是<Grid> <Border Margin="65,54,0,0" HorizontalAlignment="Center" VerticalAlignment="Center" BorderBrush="Black" BorderThickness="6"> <TextBlock x:Name="txtInputUsername" HorizontalAlignment="Left" VerticalAlignment="Top" Background="#FFF3F3F3" FontFamily="Open Sans" FontSize="20" OpacityMask="Black" Text="Username" TextAlignment="Center" TextWrapping="Wrap" /> </Border> </Grid> 。这些可以相互嵌套,以一种相当不错,干净的方式创建几乎任何你能想象到的布局。