2012-10-20 5 views
2

저는 현재 Popup에서 상속받은 클래스를 만듭니다.UIElement의 높이와 너비를 가져 옵니까?

마지막으로 TextBox을 편집 할 때 유효성 검사 규칙이있는 팝업을 사용자에게 표시하는 데 사용됩니다.

따라서 지금까지이 생성자와 ValidationPopup을 만들어 :

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

나는 PlacementTarget 부모의 크기와 동일한 팝업의 크기를 설정하고 싶습니다. 많은 다른 컨트롤이 이러한 ValidationPopup 중 하나를 가질 수 있도록 TextBox 대신 UIElement을 부모로 전달합니다. 내 문제는이 컨트롤의 너비와 높이 값을 전달해야합니다. 올바른 크기로 만들기 위해 ValidationPopup.

UIElement에서이 값을 구할 수 있습니까? MSDN에서 RenderSize를 보았지만 너비와 높이가 0.0입니다.

ValidationPopup의 I 설정 한 인스턴스는 곳입니다 :

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

내가 RenderSize을 사용하려고하지만, 전체 UI가 completly 완료 될 때까지이 작동하지 않습니다.

이 시점에서 UIElement의 높이와 너비 값을 가져 오는 방법이 있습니까? 동일한 결과를 얻을 수있는 더 좋은 방법이 있습니까?

답변

2

ActualWidth/Height 속성을 사용해야하는 것 같습니다. 그것들이 여전히 0 또는 NaN이면 뷰 생성의 나중 부분에서이 코드를 실행해볼 수 있습니다.

+2

사실 AcutalHeight/Width 속성은 없지만이를 검색하는 동안 UIElement에 종속적 인 FrameworkElement의 Width 및 Height 속성을 발견했으며 UIElement 대신 동일한 결과를 사용할 수 있습니다. – TorbenJ

+0

Hmm ok Height property of FrameworkElement는 NaN입니다. 당신은 당신의 제안에 옳습니다. 이제 ActualHeight를 사용합니다. – TorbenJ

관련 문제