在列表框中绑定符号
Binding Symbols in a ListBox
我想使用 Segoe MDL2 Assets 中的一些项目作为从 collection 驱动的菜单的图标。
我有我的 collection 定义
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 中用图标值替换绑定语句,它就可以工作。我很好奇如何正确执行此绑定。
(请注意,除了具有相同结果的通用内容控件之外,我还尝试了各种控件,所以我知道它与此无关)
非常感谢!
在 C# 中,unicode character escapes sequences 以 \u
为前缀,因此您的代码应如下所示:
NavItems = new ObservableCollection<NavItem>
{
new NavItem { Icon = "\uE1E2", ... },
new NavItem { Icon = "\uE115", ... }
};
我想使用 Segoe MDL2 Assets 中的一些项目作为从 collection 驱动的菜单的图标。
我有我的 collection 定义
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 中用图标值替换绑定语句,它就可以工作。我很好奇如何正确执行此绑定。
(请注意,除了具有相同结果的通用内容控件之外,我还尝试了各种控件,所以我知道它与此无关)
非常感谢!
在 C# 中,unicode character escapes sequences 以 \u
为前缀,因此您的代码应如下所示:
NavItems = new ObservableCollection<NavItem>
{
new NavItem { Icon = "\uE1E2", ... },
new NavItem { Icon = "\uE115", ... }
};