当我写作
public class A : Control
{
static A()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(A), new FrameworkPropertyMetadata(typeof(A)));
}
}
public class B : A
{
}
A
正确显示其风格,但B
没有A
的风格
但是,例如,如果我继承Button
,则继承的控件会正确显示为按钮
为什么它适用于Button
但不适用于我的控制?
因为您在类A的构造函数中运行该行代码。当您实例化B类时,B的构造函数将运行而不是A.您可以尝试执行以下操作:
public class A : Control
{
static A()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(A), new FrameworkPropertyMetadata(typeof(A)));
}
}
public class B : A
{
static B : base()
{
}
}