zoukankan      html  css  js  c++  java
  • 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);
                        }
                    }
                }
            }

    我们看到中文了。。。

  • 相关阅读:
    MySql不同版本对表名大小写敏感!
    jQuery Intellisense in VS 2008
    控制台方式运行java程序示例
    有关SQL Server 2008安装时“安全程序支持规则”失败的解决方法
    正则表达式实现验证的技术总结
    网站开发架构设计要求
    jquery select控件的相关操作
    Windows Embedded Standard 7 开发随笔
    一步步做自己的webinstall安装包
    仿新浪新闻中异步替换关键字
  • 原文地址:https://www.cnblogs.com/HelloMyWorld/p/2932088.html
Copyright © 2011-2022 走看看