[英]Change the FontStyle in code behind in WPF
如何在WPF中更改代码隐藏中的FontStyle
。 我试过这个:
listBoxItem.FontStyle = new FontStyle("Italic");
我有错误,任何想法?
它是FontStyles.Italic
...使用FontStyles
枚举来设置FontStyle
的值
listBoxItem.FontStyle = FontStyles.Italic;
试试这个FontStyles.Italic
listBoxItem.FontStyle = FontStyles.Italic;
在这种情况下, FontStyle
是结构MSDN
:
定义一个表示字体样式为普通,斜体或倾斜的结构。
它可以在ILSpy
查看:
[TypeConverter(typeof(FontStyleConverter)), Localizability(LocalizationCategory.None)]
public struct FontStyle : IFormattable
{
private int _style;
internal FontStyle(int style)
{
this._style = style;
}
在这里,我们看到Int
类型的字段_style
。 要设置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
}
这个标志枚举是公共的,并在System.Drawing
使用,如下所示:
SomeControl.Font = new Font(FontFamily.GenericSansSerif,
12.0F, FontStyle.Bold | FontStyle.Italic);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.