如何在WPF的TextBlock中为文本添加边框?

7

我有点新手WPF,不知道这个问题是否奇怪。我想知道是否可以在textBlock内部的文本周围添加边框。

编辑:

根据建议,我尝试了两种方法,但没有太大的成功:

<Border BorderBrush="#FF0B232F" BorderThickness="2">
   <TextBlock HorizontalAlignment="Left" Text="TextBlock" TextWrapping="Wrap" FontSize="36" FontWeight="Bold" Foreground="#FF88BCCD" OpacityMask="Black"/>      
</Border>

并且。
<Label BorderBrush="#FF0B232F" BorderThickness="2,2,2,2" Content="TextBlock" FontSize="36" FontWeight="Bold" Foreground="#FF88BCCD" />

我这里做错了什么吗?


你的代码都没问题。你对它有什么不喜欢的地方吗? - Y.Yanavichus
2
他的问题是如何在文本块内部(即内容)周围添加边框... 没有人回答这个问题。我也想知道如何做到这一点。 - zezba9000
1
看看这个答案 - https://dev59.com/NHVD5IYBdhLWcg3wGHeu - zezba9000
4个回答

5
在这种情况下,我会使用放置在Border中的LabelTextBlock

4

你们两种方法都是正确的,然而,如果你把文本块/标签放在一个网格(或任何其他容器)中并按照你所声明的方式进行设置,它的内容将会被拉伸。 尝试设置适当的垂直对齐和/或水平对齐方式(例如Top/Left、Center等)。

像这样:

<Border BorderBrush="#FF0B232F" BorderThickness="2" VerticalAlignment="Top">
    <TextBlock HorizontalAlignment="Left" Text="TextBlock" TextWrapping="Wrap" FontSize="36" FontWeight="Bold" Foreground="#FF88BCCD" OpacityMask="Black"/>
</Border>

1
Filipe 是正确的 - 如果网格/容器包含其他对象,则边框将有效覆盖整个网格 - VerticalAlignment 和 HorizontalAlignment 可以解决这个问题。不直观! - Ricibob

2

假设您要求一个具有边框覆盖的完整大小TextBlock,在TextBlock范围内,您可以将其包装在Grid中,并像这样在TextBlock上方绘制边框...

<Grid HorizontalAlignment="Left">
    <TextBlock Text="TextBlock" TextWrapping="Wrap" FontSize="36" FontWeight="Bold" Foreground="#FF88BCCD" OpacityMask="Black" />
    <Border BorderBrush="#FF0B232F" BorderThickness="2" />
</Grid>

由于我们没有在TextBlock和Border对象上指定网格行和列,所以边框会覆盖在TextBlock上方。


0
如果你只是想在文本块或任何其他控件周围有一个边框,请使用以下代码:
 <Border>
      <TextBlock></TextBlock>
    </Border>

你可以设置边框属性,如颜色、圆角半径、厚度等...


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