首页 > 解决方案 > 如何使圆形边框和背景颜色完全适合 TextBlock 中的文本范围?

问题描述

我有以下 XAML:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="140"/>
        <ColumnDefinition Width="60"/>
    </Grid.ColumnDefinitions>
    <TextBlock Text="{Binding Level}"/>
</Grid>

Level基本上是一个日志级别(Verbose, Information, Warning, Error)。

首先,我想添加背景颜色,但仅限于文本本身。

如果我这样做<TextBlock Text="{Binding Level}" Background="Yellow"/>了,我最终会得到这样的结果:

Verbose

我可以通过执行以下操作来解决此问题:

<TextBlock>
    <Run Text="{Binding Level}" Background="Yellow"/>
</TextBlock>

现在我正确地结束了:

Verbose

但现在我想绕过文本本身的角落,而且……我找不到办法,希望能得到一些帮助。

我尝试添加 a BorderTextBlock但这会在整个 周围创建边框TextBlock,而不仅仅是其中的文本。

标签: c#wpfxaml

解决方案


如果你在一个或上设置一个HorizontalAlignment和,它会阻止它拉伸到它的父大小(这是默认行为)。VerticalAlignmentFrameworkElementBorderTextBlock

您可以编写以下 XAML:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="140"/>
        <ColumnDefinition Width="60"/>
    </Grid.ColumnDefinitions>
    <Border Background="Yellow" CornerRadius="5" HorizontalAlignment="Left" VerticalAlignment="Top">
        <TextBlock Text="Hello"/>
    </Border>
</Grid>

并且Border唯一需要容纳它的孩子的空间TextBlock


推荐阅读