【问题标题】:UWP Text can't show correctly in some font when change it in code, especially icon font在代码中更改 UWP 文本时,某些字体无法正确显示,尤其是图标字体
【发布时间】:2019-01-03 16:06:16
【问题描述】:

当我想更改我的字体图标背景时,它们无法很好地显示。但是,当我只是不更改并且它们保留我在 XAML 中设置的原始值时,它们很好。

我觉得可能是我字体的问题,所以我尝试了其他字体,最后我发现只有像“Segoe UI Emoji”“Segoe UI Symbol”和“Segoe UI Symbol”这样的图标字体出错了。其他字体,如“Verdana”或“Arial”,效果很好。

我使用 TextBlock 控件并在 XAML 中设置它的 FontFamily 属性,然后在 C# 中更改它的文本属性背景。我也尝试了 FontIcon Control,可悲的是,它也不能很好地工作。

我的 UWP 最小版本和目标版本都是 10240,我是在 Visual Studio 2015 中编写的。

这是我的代码:

xaml

<TextBlock  Name="IconTextBlock"  Text="&#xE10B;" FontFamily="Segoe MDL2 Assets"/>

C#

private void ReFreshButton_Click(object sender, RoutedEventArgs e)
{ 
    IconTextBlock.Text = "&#xE106;";
}

【问题讨论】:

    标签: c# xaml uwp


    【解决方案1】:

    问题似乎在于您如何设置字符而不是字体。

    XAML 和 C# 使用不同的格式来按数字表示 Unicode 字符。您的 C# 代码 sn-p 使用 XAML 字符串文字格式 ("&amp;#xE106;") 而不是 C# 字符串文字格式 ("\uE106"),对于 C#,XML 格式只是文本。

    您没有将字符串设置为 Unicode 字符 E106(取消 X 标记),而是将其设置为实际字符串“”。这在“Segoe MDL2 Assets”中显示为框,因为该字体不包含正常的字母数字字符。如果您在调试器中查看字符串或使用正常使用的字体(例如 Verdana 或 Arial)显示它,您应该会看到字符串拼写为“”,而不是由取消字形表示。

    要从 C# 中获得与从 Xaml 中获得的相同行为,请根据 C# 的 string syntax 设置字符串文字:

    IconTextBlock.Text = "\uE106";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-02
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多