c# - 如何使圆形边框和背景颜色完全适合 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 Border
,TextBlock
但这会在整个 周围创建边框TextBlock
,而不仅仅是其中的文本。
解决方案
如果你在一个或上设置一个HorizontalAlignment
和,它会阻止它拉伸到它的父大小(这是默认行为)。VerticalAlignment
FrameworkElement
Border
TextBlock
您可以编写以下 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
。
推荐阅读
- python - Matplotlib 条形图自动标签子图 - 名称“轴”无法识别
- javascript - 无法在自定义 BetterDiscord 扩展代码中解构“TouchBar”的属性“TouchBarButton”
- informatica - 使用来自 wsdl 的数据并通过 Informatica 云将数据公开为 Rest 或 soap,以供 Salesforce 应用程序使用
- c++ - 在 c++ 句子中显示单词
- java - 下载文件时如何处理 URL 中的日文文件名。在 IE 和 FireFox 中面临的问题
- java - 表示应将其删除的令牌上的语法错误
- apache-kafka - 使用 Avro 和使用 NiFi 的 Confluent 模式注册表将 JSON 中的数据写入 KAFKA
- r - 想知道如何在 `mapply` 中正确使用 `%>%`?
- javascript - javascript localStorage中可更改的HTML下拉菜单
- c++ - 将模板函数传递给模板函数(Eigen Derived)