2012-04-25 3 views
1

내 프로젝트에는 많은 중첩 된 그리드가 있습니다. 그리고 대부분 행과 열 너비는 XAML에서 "*"로 정의됩니다.

다른 행의 높이를 0으로 설정하여 특정 행을 확장하려고합니다. 그리고 .ActualHeight 속성을 사용하여 Row1 너비를 가져 와서 실제 높이를 제공하지 않습니다.

그리드 행과 열의 높이와 너비가 렌더링 시간에 설정되어 있기 때문에 필자는이를 알고 있습니다.
나는 그물에서 검색했고 누군가는 UpdateLayout() 메서드를 사용하도록 제안했다. 그러나 그것은 나를 위해 일하지 않는다.
매우 긴 코드이므로 코드 스 니펫을 게시 할 수 없습니다.
내 프로젝트는 C# .net wpf. FrameworkElement을 (그리드 하나입니다) 인렌더링 전에 그리드 행의 실제 높이를 얻는 방법

//Make the framework (re)calculate the size of the element 
    _Element.Measure(new Size(Double.MaxValue, Double.MaxValue)); 
    Size visualSize = _Element.DesiredSize; 
    _Element.Arrange(new Rect(new Point(0, 0), visualSize)); 
    _Element.UpdateLayout(); 

_Element :

답변

4

당신은 당신이, 측정 전화를 마련 할 필요가 있고에 UpdateLayout, 전체 레이아웃 업데이트를 할 필요가있다.

+0

부끄러움처럼 일했으며, 고마워요. 선생님. – JohnChris

0

Baboon post를 기반으로 한 솔루션이 저에게 효과적이었습니다. 축소 된 FrameworkElement에서 슬라이드를 애니메이션화해야하는데, ActualHeight 값을 모르는 비슷한 문제가 무엇입니까?

element.Visibility = Visibility.Visible; 
    element.InvalidateArrange(); 
    element.UpdateLayout(); 

    double elementHeight = element.DesiredSize.Height; 
    DoubleAnimation animation = new DoubleAnimation(0, elementHeight, TimeSpan.FromMilliseconds(animMilisec)); 
    element.BeginAnimation(Rectangle.HeightProperty, animation); 

이제 요소가 렌더링되기 전에 최종 높이에 액세스 할 수 있습니다.

관련 문제