MDL2信息符号

时间:2015-12-08 11:23:04

标签: xaml fonts assets

Microsoft出于提供信息的目的使用特定符号,它是一个字母i Image of the Symbol内的圆圈。我查看了有关Segoe MDL2资产字体的所有资源,但没有找到该符号。有谁知道这个符号是字体的一部分还是只是另一个图像?

1 个答案:

答案 0 :(得分:1)

符号代码点为E946

以下WPF代码段创建IEnumerable<int>,其中包含Segoe MDL2 Assets中的所有符号代码点。

var typeface = new Typeface(
    new FontFamily("Segoe MDL2 Assets"),
    FontStyles.Normal, FontWeights.Normal, FontStretches.Normal);

GlyphTypeface glyphTypeface;
typeface.TryGetGlyphTypeface(out glyphTypeface);

var codePoints = glyphTypeface.CharacterToGlyphMap.Keys.Where(c => c > 0x20);

您可以通过设置DataContext = codePoints并编写如下的ItemsControl来轻松地显示此集合:

<ItemsControl ItemsSource="{Binding}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <TextBlock
                    Margin="2" VerticalAlignment="Center"
                    Text="{Binding StringFormat={}{0:X4}}"/>
                <TextBlock
                    Margin="2" FontFamily="Segoe MDL2 Assets" FontSize="24"
                    Text="{Binding Converter={StaticResource CodePointConverter}}"/>
            </StackPanel>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

使用此CodePointConverter类:

public class CodePointConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return new string((char)(int)value, 1);
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotSupportedException();
    }
}