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

问题描述 投票:0回答:1

当我写作

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

public class B : A 
{
}

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

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

c# .net wpf inheritance
1个回答
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()
     {
     }
}
© www.soinside.com 2019 - 2024. All rights reserved.