在WPF中更改后面的代码中的字体样式

时间:2014-02-26 06:22:02

标签: c# wpf fonts

如何在WPF中更改代码隐藏中的FontStyle。我试过这个:

listBoxItem.FontStyle = new FontStyle("Italic"); 

我有错误,有什么想法吗?

3 个答案:

答案 0 :(得分:14)

FontStyles.Italic ...使用FontStyles枚举设置FontStyle

的值
listBoxItem.FontStyle = FontStyles.Italic;

答案 1 :(得分:2)

试试这个FontStyles.Italic

listBoxItem.FontStyle = FontStyles.Italic;

答案 2 :(得分:1)

在这种情况下,FontStyle是结构MSDN

  

定义一个表示字体样式为普通,斜体或倾斜的结构。

可以在ILSpy中查看:

[TypeConverter(typeof(FontStyleConverter)), Localizability(LocalizationCategory.None)]
public struct FontStyle : IFormattable
{
    private int _style;

    internal FontStyle(int style)
    {
        this._style = style;
    }

我们在此处看到 _style 类型的字段Int。要设置Int类型的值,它取自静态类FontStyles

public static class FontStyles
{
     public static FontStyle Normal
     {
        get
        {
            return new FontStyle(0);
        }
    }

    public static FontStyle Oblique
    {
        get
        {
            return new FontStyle(1);
        }
    }

    public static FontStyle Italic
    {
        get
        {
            return new FontStyle(2);
        }
    }

    internal static bool FontStyleStringToKnownStyle(string s, IFormatProvider provider, ref FontStyle fontStyle)
    {
        if (s.Equals("Normal", StringComparison.OrdinalIgnoreCase))
        {
            fontStyle = FontStyles.Normal;
            return true;
        }

        if (s.Equals("Italic", StringComparison.OrdinalIgnoreCase))
        {
            fontStyle = FontStyles.Italic;
            return true;
        }

        if (s.Equals("Oblique", StringComparison.OrdinalIgnoreCase))
        {
            fontStyle = FontStyles.Oblique;
            return true;
        }

        return false;
    }
}

事实证明,设置FontStyle需要引用静态类FontStyles

SomeControl.FontStyle = FontStyles.Italic;

可能有点令人困惑,事实上有两个FontStyle(没有s)枚举:

<强> namespace MS.Internal.Text.TextInterface

internal enum FontStyle
{
    Italic = 2,
    Oblique = 1,
    Normal = 0
}

此枚举是内部,我认为系统内部结合公共结构FontStyles使用。

<强> namespace System.Drawing

[Flags]
public enum FontStyle
{
    Regular = 0,
    Bold = 1,
    Italic = 2,
    Underline = 4,
    Strikeout = 8
 }

此标记枚举是 Public 并在System.Drawing中使用,如下所示:

SomeControl.Font = new Font(FontFamily.GenericSansSerif,
                        12.0F, FontStyle.Bold | FontStyle.Italic);