DependencyProperty.GetValue возвращает неправильное значение

Здравствуйте, это мой код:

public class Class1 : FrameworkElement
{
    protected override void OnRender(DrawingContext drawingContext)
    {
        base.OnRender(drawingContext);

        var testOk = this.ActualWidth;
        var testNotOk = this.GetValue(ActualWidthProperty);
    }
}

TestNotOk всегда равен нулю, TestOk имеет правильное значение. Почему это происходит?

2 ответа

Заглянуть в FrameworkElement Исходный код показывает это:

public double ActualWidth
{
    get { return this.RenderSize.Width; }
}

После первого OnRender() позвонить ActualWidth свойство возвращает то же значение, что и GetValue(ActualWidthProperty)По крайней мере, в моем тестовом приложении.

Обходной путь может быть:

typeof(Class1).GetProperty(ActualWidthProperty.Name).GetValue(this);
Другие вопросы по тегам