DependencyProperty.GetValue返回错误的值

时间:2016-05-26 01:30:12

标签: wpf dependency-properties 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 个答案:

答案 0 :(得分:3)

查看FrameworkElement源代码可以看出这一点:

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

在第一个OnRender()调用之后,ActualWidth属性返回与GetValue(ActualWidthProperty)相同的值,至少在我的测试应用程序中。

答案 1 :(得分:1)

解决方法可以是:

typeof(Class1).GetProperty(ActualWidthProperty.Name).GetValue(this);