2012-10-20 276 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