如何在资源字典中使文本的一部分加粗

可见

我在资源字典中定义的字符串为

<x:String x:Key="MyString">This is a resource</x:String>

在我的xaml中。

我在TextBlock中使用此字符串。

有没有一种方法可以使“这是”文本变为粗体?

<TextBlock Text="{StaticResource MyString}"/>

我无法使用“运行”,因为此字符串将被翻译成另一种语言,例如德语。

地窖

你可以用你的样式串inline document elements<Bold><Italic><Underline>甚至<Run>

special characters从字符串中逃脱

使用Inlines附加属性,该属性将字符串转换为内联元素。

<TextBlock local:Inlines.Text="{StaticResource MyString}"/>

MyString的定义如下

<x:String x:Key="MyString">&lt;Bold&gt;This&lt;/Bold&gt; is a resource</x:String>

结果将是

在此处输入图片说明

内联附加属性的完整源代码

public class Inlines
{
    public static readonly DependencyProperty TextProperty = DependencyProperty.RegisterAttached("Text",
        typeof(string), typeof(Inlines), new FrameworkPropertyMetadata(string.Empty, FrameworkPropertyMetadataOptions.AffectsMeasure, OnTextPropertyChanged));

    public static void SetText(DependencyObject @do, string value)
    {
        @do.SetValue(TextProperty, value);
    }

    public static string GetText(DependencyObject @do)
    {
        return (string)@do.GetValue(TextProperty);
    }

    private static void OnTextPropertyChanged(DependencyObject @do, DependencyPropertyChangedEventArgs e)
    {
        var textBlock = @do as TextBlock;

        if (textBlock == null)
        {
            throw new InvalidOperationException("This property may only be set on TextBox");
        }

        var value = GetText(@do);

        var text = "<Span xml:space=\"preserve\" xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\">" +
             $"{value ?? string.Empty}</Span>";

        textBlock.Inlines.Clear();

        using (var xmlReader = XmlReader.Create(new StringReader(text)))
        {
            var result = (Span)XamlReader.Load(xmlReader);
            textBlock.Inlines.Add(result);
        }
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何仅加粗段落的一部分?

如何加粗文本的一部分Android字符串

如何在iOS中将字符串的一部分加粗?

如何在Flutter中使颜色成为UI文本的一部分?

如何设置字符串的一部分加粗?

如何使字符串变量的一部分加粗

如何删除文本的一部分

如何在 Flutter 中设置文本的一部分样式?

如何在jQuery中获取文本框ID的一部分

如何在React中为正文文本的一部分添加样式

如何在React Native的TextInput中为文本的一部分应用样式?

如何在python中删除文本的一部分

如何在 ShouldBindJSON() 中使用結構的一部分?

如何在子查询中使用HAVING作为Select语句的一部分

如何在层滑块中使横幅的一部分可单击

如何在ah:outputText Bold中使值的一部分?

如何在Java中使用字符串的一部分?

如何在 Matlab 中使用其他结构的一部分创建结构?

如何在 Python 中的文本文件中提取部分图案线条的一部分?

如何在div内的第三个单词设置样式并在新代码的一部分中使用该文本?

如何在React中使用Material-UI在onFocus事件上的Textfield中选择文本的一部分?

如何在字典列表中找到字符串作为键值的一部分?

如何在 for 循環中計算值作為字典鍵的一部分

我如何使用python在Excel单元格中仅加粗字符串的一部分

从json文件的一部分创建字典

提取字典文件的一部分

将字典的一部分与副本合并

在python中获得字典的一部分

从字典中获取一部分