【问题标题】:How to programmatically create textblock using Segoe MDL2 Assets Font in WPF如何在 WPF 中使用 Segoe MDL2 资产字体以编程方式创建文本块
【发布时间】:2021-08-25 01:59:52
【问题描述】:

我想这应该很简单,但我得到的不是我需要的图标,而是一堆方形框。

最初我是在 xaml 中对菜单进行硬编码:

code omitted
<ListBoxItem Name="menuHome" >
<StackPanel Orientation="Horizontal">
    <TextBlock FontFamily="Segoe MDL2 Assets" Text="&#xE10F;" FontSize="16" VerticalAlignment="Center" />
    <TextBlock Text="Home" FontSize="16" VerticalAlignment="Center" Padding="15,0,0,0"/>
</StackPanel>
</ListBoxItem>
code omitted

我现在必须动态创建这个菜单,所以我有以下内容:

ListBoxItem menuHome = new ListBoxItem();
StackPanel menuHomeStackPanel = new StackPanel() { Orientation = Orientation.Horizontal };
menuHomeStackPanel.Children.Add(new TextBlock() { FontFamily = new FontFamily("Segoe MDL2 Assets"), FontSize = 16, VerticalAlignment = VerticalAlignment.Center, Text = "&#xE10F;" });
menuHomeStackPanel.Children.Add(new TextBlock() { FontSize = 16, VerticalAlignment = VerticalAlignment.Center, Text = "Home", Padding = new Thickness(15, 0, 0, 0) });
menuHome.Content = menuHomeStackPanel;
menuHome.Name = "menuHome";
IconsListBox.Items.Add(menuHome);

除了 Segoe MDL2 Assets 字体外,这几乎给了我相同的效果,可以在下面的屏幕截图中看到:

任何想法 - 可能很简单...?

【问题讨论】:

  • 对于 VB.net 应该使用 text = ChrW("&HE10F")

标签: c# wpf xaml


【解决方案1】:

试试这个:

Text = "\xE10F" 

【讨论】:

  • 工作就像一个魅力 - 谢谢。 \ 是做什么的? - 说“这是一个字符而不是字符串文字”?
  • @Rick \x 是 C# 字符串文字中使用的前缀,用于指示接下来的四个字符是十六进制字符代码。它完全等同于 XML &amp;#xE10F; 表示法。
  • 非常感谢 - 仍然收集这样的小花絮。
  • @EdPlunkett 这不适用于 UWP,请帮助。
  • @Aasish 不。我怎么能猜出你做错了什么?你甚至没有说出你想要做什么,或者你是如何尝试做的,或者出了什么问题。问一个真正的问题。展示您尝试过的内容并准确说出问题所在。也许有人会帮助你。
【解决方案2】:

你可以试试这个。

我很确定它会起作用:

Text = ""

是的,它成功了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多