首页 > 解决方案 > 如何在 UWP 中的文本块中绘制一条穿过文本的醒目水平线?

问题描述

我想做这样的事情。

在此处输入图像描述

TextStyle 属性不提供类似的东西。有什么方法可以轻松实现吗?

更新

感谢您回答有关使用 TextDecoration 的问题。但是,它有点太薄了,不能有不同的颜色。有没有更灵活的解决方案?

标签: c#uwp

解决方案


我最终自己解决了这个问题。我使用绑定在 TextBlock 上绘制自定义线。行端点派生自绑定属性返回的 TextBlock 大小和偏移量。

<TextBlock x:Name="textLabel" Text="HelloWOrld}" Foreground="WhiteSmoke" FontSize="12" FontFamily="Arial" VerticalAlignment="Center" RelativePanel.RightOf="visibleUI" DoubleTapped="OnEditNameBegin"  />
            
<Line Name="crossOutLine"  Stroke="Red" StrokeThickness="4" 
                  X1="{x:Bind LayerData.nameLabelX1, Mode=OneWay}" 
                  Y1="{x:Bind LayerData.nameLabelY1, Mode=OneWay}" 
                  X2="{x:Bind LayerData.nameLabelX2, Mode=OneWay}" 
                  Y2="{x:Bind LayerData.nameLabelY2, Mode=OneWay}"/>

装订部分:

public float nameLabelX1 { get => 0; }
public float nameLabelY1 { get => (float)textLabel.DesiredSize.Height /2; }
public float nameLabelX2 { get => (float)textLabel.DesiredSize.Width;}
public float nameLabelY2 { get => nameLabelY1; }

推荐阅读