我想在 Segoe MDL2资产中使用一些项目作为从集合驱动的菜单的图标。
我定义了我的收藏
NavItems = new ObservableCollection<NavItem>
{
new NavItem {Title = "Sign in", Icon="", ClassType = null },
new NavItem {Title = "Settings", Icon="", ClassType = typeof(Settings) }
};
在我的xaml中,我有一个定义为
的列表框<ListBox ItemsSource="{Binding NavItems}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Height="24">
<ContentControl Content="{Binding Icon}" FontFamily="Segoe MDL2 Assets" />
<StackPanel Margin="20,0,0,0">
<TextBlock Text="{Binding Title}"/>
</StackPanel>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
问题在于渲染此列表框时,图标无法正确渲染(它们显示为一堆正方形)。但是,如果我直接在xaml中用图标值替换绑定语句,它就可以工作。我很好奇我将如何正确地进行这种绑定。
(注意我除了通用内容控件之外还尝试过各种控件,结果相同,所以我知道它与之无关)
非常感谢!
答案 0 :(得分:3)
在C#中,unicode character escapes sequences的前缀为\u
,因此您的代码应如下所示:
NavItems = new ObservableCollection<NavItem>
{
new NavItem { Icon = "\uE1E2", ... },
new NavItem { Icon = "\uE115", ... }
};