DrawingVisual DependencyProperty不从Parent继承

时间:2010-06-28 11:05:33

标签: wpf inheritance dependency-properties

我有一个继承自DrawingVisual的类。它声明了一个DependencyProperty,它在注册时应该从父级继承它的值。

然后我在这个类的两个实例之间创建一个父子关系。我设置了父DependencyProperty,但子的DependencyProperty没有返回父值。谁能确定我做错了什么?

这是DrawingVisual子类型的声明:

public class MyDrawingVisual : DrawingVisual
{
    public static readonly DependencyProperty SomeValueProperty;

    static MyDrawingVisual()
    {
        FrameworkPropertyMetadata metadata = new FrameworkPropertyMetadata() { Inherits = true };
        SomeValueProperty = DependencyProperty.Register("SomeValue", typeof(double), typeof(MyDrawingVisual), metadata);
    }

    public double SomeValue
    {
        get { return (double)GetValue(SomeValueProperty); }
        set { SetValue(SomeValueProperty, value); }
    }
}

创建父子关系的方法如下:

private void Test()
{
    MyDrawingVisual mdv1 = new MyDrawingVisual() { SomeValue = 1.23 };
    MyDrawingVisual mdv2 = new MyDrawingVisual();
    mdv1.Children.Add(mdv2);
    double value = mdv2.SomeValue; // Expected = 1.23, actual = 0.0
}

非常感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

FrameworkPropertyMetadata仅适用于FrameworkElement派生类。

我在VS生成的WPF应用程序上重现了您的问题,然后从FrameworkElement派生了MyDrawingVisual,它的工作方式与广告一致。如果它派生自UIElement(FrameworkElement的基类),则它不再有效。

可视继承取决于内部属性InheritanceParent,我们无法设置,抱歉。