DrawingVisual DependencyProperty не наследуется от родителя - PullRequest
1 голос
/ 28 июня 2010

У меня есть класс, который наследует от 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 Ответ

1 голос
/ 28 июня 2010

FrameworkPropertyMetadata работает только для классов, производных от FrameworkElement.

Я воспроизвел вашу проблему в сгенерированном VS приложении WPF, затем получил MyDrawingVisual из FrameworkElement, и он работает так, как объявлено.Если он наследуется от UIElement (базовый класс FrameworkElement), он больше не работает.

Визуальное наследование зависит от внутреннего свойства InheritanceParent, которое мы не можем установить, извините.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...