C# 获取UIElement的高度和宽度?

C# 获取UIElement的高度和宽度?,c#,wpf,height,width,uielement,C#,Wpf,Height,Width,Uielement,我当前创建了一个类,该类继承自弹出窗口 最后,它将用于在编辑时向用户显示带有验证规则的弹出窗口,例如文本框 因此,到目前为止,我使用此构造函数创建了ValidationPopup: public ValidationPopup(UIElement parent, double width) : base() { this.parent = parent; this.width = width; InitControl(); } 我想将弹出窗口的大小设置为PlacementTa

我当前创建了一个类,该类继承自
弹出窗口

最后,它将用于在编辑时向用户显示带有验证规则的弹出窗口,例如
文本框

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

public ValidationPopup(UIElement parent, double width) : base()
{
   this.parent = parent;
   this.width = width;
   InitControl();
}
我想将弹出窗口的大小设置为PlacementTarget父对象的大小。 为了使许多不同的控件能够拥有其中一个验证弹出窗口,我将
UIElement
作为父控件传递,而不是
TextBox
等。 我的问题是,在构建ValidationPopup实例时,我必须传递此控件的宽度和高度值,以便正确调整其大小

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

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

txtOperator = new TextBox();
layoutGrid.Children.Add(txtOperator);
operatorVPU = new ValidationPopup(txtOperator, txtOperator.Width);
我试着使用renderize,但直到整个UI完全完成后,它才起作用

在这一点上有没有办法获得UIElement的高度和宽度值?
是否有其他更好的方法可以达到同样的效果?

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

实际上没有AcutalHeight/Width属性,但在搜索此属性时,我找到了FrameworkElement的Width和Height属性,它从属于UIElement,可以代替UIElement使用,但结果相同:)Hmm好的Height属性框架元素也是NaN。你的建议是对的。现在我使用实际重量。