FontFamily获取中文名字

这毛问题困扰我几天了,主要是关键字不好搜索,不过进过大量的点击搜索,无意中打开一个网页,居然找到了

设置字体,我们都喜欢这样

<Grid>
                    <Grid.Resources>
                        <CollectionViewSource x:Key="sysFonts" Source="{x:Static Member=Fonts.SystemFontFamilies}"></CollectionViewSource>
                    </Grid.Resources>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="1*"></ColumnDefinition>
                        <ColumnDefinition Width="3*"></ColumnDefinition>
                    </Grid.ColumnDefinitions>
                    <Label Content="选择字体:" Grid.Column="0"></Label>
                    <ComboBox Grid.Column="1" ItemsSource="{Binding Source={StaticResource sysFonts}}" SelectedValue="{Binding FontFamilySelected}"></ComboBox>
                </Grid>

但是,有个问题,这样做ComboBox中是这样的

全是英文的,什么宋体呀,都是英文的,这样不好,那么要怎么样做呢,请看原文地址http://www.oschina.net/code/snippet_67021_837

我做的话,那就在后台做,做一个类型转换器Converet

public class StringToFontFamily : IValueConverter
    {

        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            FontFamily fontfamily = (FontFamily)value;
            LanguageSpecificStringDictionary lsd = fontfamily.FamilyNames;
            if (lsd.ContainsKey(XmlLanguage.GetLanguage("zh-cn")))
            {
                string fontname = null;
                if (lsd.TryGetValue(XmlLanguage.GetLanguage("zh-cn"), out fontname))
                {
                    return fontname;
                }
            }
            else
            {
                string fontname = null;
                if (lsd.TryGetValue(XmlLanguage.GetLanguage("en-us"), out fontname))
                {
                    return fontname;
                }
            }
            return "Arial";
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            string fontname = (string)value;
            FontFamily fontfamily = new FontFamily(fontname);
            return fontfamily;
        }
    }
private void InitFontFamily()
        {
            foreach (FontFamily fontfamily in Fonts.SystemFontFamilies)
            {
                LanguageSpecificStringDictionary lsd = fontfamily.FamilyNames;
                if (lsd.ContainsKey(XmlLanguage.GetLanguage("zh-cn")))
                {
                    string fontname = null;
                    if (lsd.TryGetValue(XmlLanguage.GetLanguage("zh-cn"), out fontname))
                    {
                        cboFontFamily.Items.Add(fontname);
                    }
                }
                else
                {
                    string fontname = null;
                    if (lsd.TryGetValue(XmlLanguage.GetLanguage("en-us"), out fontname))
                    {
                        cboFontFamily.Items.Add(fontname);
                    }
                }
            }
        }

我们看到中文了。。。

 

 

转载于:https://www.cnblogs.com/HelloMyWorld/archive/2013/02/25/2932088.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值