在ListBox中绑定符号

时间:2015-08-12 21:48:53

标签: wpf xaml win-universal-app

我想在 Segoe MDL2资产中使用一些项目作为从集合驱动的菜单的图标。

我定义了我的收藏

NavItems = new ObservableCollection<NavItem>
{
    new NavItem {Title = "Sign in", Icon="&#xE1E2;", ClassType = null },
    new NavItem {Title = "Settings", Icon="&#xE115;", 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中用图标值替换绑定语句,它就可以工作。我很好奇我将如何正确地进行这种绑定。

(注意我除了通用内容控件之外还尝试过各种控件,结果相同,所以我知道它与之无关)

非常感谢!

1 个答案:

答案 0 :(得分:3)

在C#中,unicode character escapes sequences的前缀为\u,因此您的代码应如下所示:

NavItems = new ObservableCollection<NavItem>
{
    new NavItem { Icon = "\uE1E2", ... },
    new NavItem { Icon = "\uE115", ... }
};