2012-10-20 213 views
2

我目前正在创建一个继承自Popup的类。获取UIElement的高度和宽度?

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

所以我创建ValidationPopup与此构造至今:

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

我想设置弹出等于PlacementTarget父的尺寸大小。 为了让许多不同的控件能够有这些ValidationPopups之一,我通过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的高度和宽度值? 有没有其他更好的方法来达到同样的效果?

回答

2

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

+2

实际上没有AcutalHeight/Width属性,但在搜索时发现了FrameworkElement的宽度和高度属性,该属性从属于UIElement,可以用来代替UIElement,但结果相同:) – TorbenJ

+0

嗯好吧高度属性为FrameworkElement也是NaN。你的建议是对的。现在我使用ActualHeight。 – TorbenJ