获取UIElement的高度和宽度?

时间:2012-10-20 11:10:12

标签: c# wpf height width uielement

我目前创建了一个继承自Popup

的类

最后,在编辑TextBox时,它将用于向用户显示带有验证规则的弹出窗口。

因此我到目前为止用这个构造函数创建了ValidationPopup:

public ValidationPopup(UIElement parent, double width) : base()
{
   this.parent = parent;
   this.width = width;
   InitControl();
}

我想将弹出窗口的大小设置为等于PlacementTarget父级的大小。 为了允许许多不同的控件能够使用其中一个ValidationPopup,我将UIElement作为父级而不是TextBox等传递。 我的问题是,我必须在构建ValidationPopup实例时传递此控件的宽度和高度值,以便正确调整它的大小。

是否可以从UIElement获取这些值? 我在MSDN上看到了RenderSize,但它只给了我0.0的宽度和高度值。

这是我设置一个ValidationPopup实例的地方:

txtOperator = new TextBox();
layoutGrid.Children.Add(txtOperator);
operatorVPU = new ValidationPopup(txtOperator, txtOperator.Width);

我尝试使用RenderSize但是在整个UI完成后才能使用。

有没有办法在此时获得UIElement的高度和宽度值? 是否有其他更好的方法可以达到相同的效果?

1 个答案:

答案 0 :(得分:2)

听起来您需要使用ActualWidth/Height属性。如果它们仍然是0或NaN,您可以尝试在视图创建的后期部分执行此代码。