继承类的依赖属性忽略默认值

时间:2017-12-26 11:00:43

标签: c# .net wpf inheritance

写作时

public class A : Control
{
    static A()
    {
        DefaultStyleKeyProperty.OverrideMetadata(typeof(A), new FrameworkPropertyMetadata(typeof(A)));
    }
}

public class B : A 
{
}

A正确显示其样式,但B没有A的样式
但是,如果我继承Button,例如,继承的控件正确显示为按钮

为什么它适用于Button但不能用于我的控制?

1 个答案:

答案 0 :(得分:0)

因为你在类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()
     {
     }
}