您好,这是我的代码:
public class Class1 : FrameworkElement
{
protected override void OnRender(DrawingContext drawingContext)
{
base.OnRender(drawingContext);
var testOk = this.ActualWidth;
var testNotOk = this.GetValue(ActualWidthProperty);
}
}
TestNotOk始终为零,TestOk具有正确的值。 为什么会这样?
答案 0 :(得分:3)
查看FrameworkElement
源代码可以看出这一点:
public double ActualWidth
{
get { return this.RenderSize.Width; }
}
在第一个OnRender()
调用之后,ActualWidth
属性返回与GetValue(ActualWidthProperty)
相同的值,至少在我的测试应用程序中。
答案 1 :(得分:1)
解决方法可以是:
typeof(Class1).GetProperty(ActualWidthProperty.Name).GetValue(this);