如何在WPF中将星号与周围文本对齐?

dev*_*xer 1 wpf xaml textbox

我试图用周围的文本/图形而不是它上面的星号排成一行.

我认为应用负BaselineOffset将是解决方案,但似乎没有效果.

这是TextBlock.BaselineOffset属性的文档:

属性值类型:System.Double

每行文本在基于设备的像素中偏离基线的量.Double.NaN表示从当前字体特征自动计算最佳基线偏移.默认值为Double.NaN.

备注

基线是假想的水平线,用于对齐文本行中每个字符的基础.

样本标记:

<TextBlock
    Name="ReadUnreadIndicator"
    Grid.Column="0"
    VerticalAlignment="Center"
    FontWeight="Bold"
    FontSize="24"
    BaselineOffset="-10"
    Text="*" />
Run Code Online (Sandbox Code Playgroud)

无论我为BaselineOffset投放什么,星号总是出现"上标".

问题:

  1. 为什么BaselineOffset不适合我?我使用它错了还是框架中的错误?

  2. 如何在不使用边距的情况下向下移动星号(这会在TextBlock上方创建我不想要的空间)?

Mar*_*age 6

据我所知,TextBlock.BaselineOffset唯一影响TextBlock另一个内部TextBlock:

<TextBlock>Some text <TextBlock BaseLineOffset="10" Text="*"/></TextBlock>
Run Code Online (Sandbox Code Playgroud)

调整BaseLineOffset允许您相对于"某些文本"垂直移动星号.请注意,BaseLineOffset指示的默认值Double.NaN不同于0,您可能需要一个正偏移量,以避免将星号向下移动太远.

但正如您在评论中指出的那样使用BaseLineOffset不是一个好的解决方案.问题似乎是星号字形不符合您的喜好.我建议您切换到自己在WPF中绘制的字形,并使用正确的位置和外观,而不是将其放在文本旁边,使用类似的东西StackPanel来排列它们.