如何在WPF中更改代码隐藏中的FontStyle
。我试过这个:
listBoxItem.FontStyle = new FontStyle("Italic");
我有错误,有什么想法吗?
答案 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);