当我想更改字体图标的背景时,它们不能很好地显示。但是,当我只是不更改并且它们保留了我在XAML中设置的原始值时,就可以了。
我认为这可能是我的字体问题,所以我尝试了其他字体,最后,我发现只有“ Segoe UI Emoji”,“ Segoe UI Symbol”和“ Segoe UI Symbol”之类的图标字体出现错误。其他字体,例如“ Verdana”或“ Arial”,效果很好。
我使用TextBlock控件并在XAML中将其设置为FontFamily属性,然后在C#中更改其Text属性背景。我也尝试了FontIcon Control,可悲的是,它也不能很好地工作。
我的UWP最小值和目标版本均为10240,我在Visual Studio 2015中编写。
这是我的代码:
xaml
<TextBlock Name="IconTextBlock" Text="" FontFamily="Segoe MDL2 Assets"/>
C#
private void ReFreshButton_Click(object sender, RoutedEventArgs e)
{
IconTextBlock.Text = "";
}
答案 0 :(得分:1)
问题似乎出在您如何设置字符而不是字体。
XAML和C#使用不同的格式来按数字指示Unicode字符。您的C#代码段使用XAML字符串文字格式(""
)而不是C#字符串文字格式("\uE106"
),对于C#而言,XML格式只是文本。
不是将字符串设置为Unicode字符E106(取消X标记),而是将其设置为实际的字符串“&#xE106”。由于该字体不包含普通的字母数字字符,因此在“ Segoe MDL2资产”中显示为方框。如果您在调试器中查看该字符串或使用Verdana或Arial等常用字体显示该字符串,则应该看到该字符串的拼写为“&#xE106”,而不是用取消字形表示。
要获得与Xaml相同的C#行为,请为每个C#的string syntax设置字符串文字:
IconTextBlock.Text = "\uE106";