-1

你好这是我的代码:

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

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

TestNotOk 始终为零,TestOk 具有正确的值。为什么会这样?

4

2 回答 2

2

查看FrameworkElement源代码可以发现:

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

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

于 2016-05-26T05:54:22.173 回答
0

解决方法可以是:

typeof(Class1).GetProperty(ActualWidthProperty.Name).GetValue(this);
于 2016-05-26T08:25:11.543 回答