2009-11-05 3 views
0

영역 관리자를 통해 영역의 렌더링 크기를 가져 오려고합니다. 그 이유는 내가보기에 지역에보기를 추가 할 때마다 시각적으로 적합하게 만들고 싶습니다. 추가 할보기의 크기를 얻을 수 있지만 높이를 얻는 방법을 찾기 위해 고심하고 있습니다. 내가 추가하려고하는 지역.Silverlight PRISM 영역의 렌더 크기 가져 오기

분명히 코드 뒤에 숨어 있고 지역의 UIElement에 직접 액세스하고 싶습니다.

아이디어가 있으십니까? 시간

답변

-1

에 대한

덕분에 당신은 당신이 사용하고자하는 지역의 현재보기를 얻을 수

_regionManager.Regions[regionName].Views.ElementAtOrDefault(0); 

를 사용할 수 있습니다. 그런 다음 해당 뷰의 DesiredSize 속성을 확인하여 해당 영역의 예상 너비와 높이를 확인할 수 있습니다. 정상적인 사용 환경에서 작동해야한다고 생각합니다.

항상 그 지역에서보기가 있어야합니다. 존재하지 않는다면 더미 뷰를 사용하는 것이 좋습니다.

+0

고마워요, 내가 뭘 필요한지 꽤 많이, 나는 ElementAtOrDefault 메서드를 사용할 수 없기 때문에. 새로운 뷰가 생성 될 때마다 내가 한 일은로드 된 이벤트를 수신 한 다음 추가 된 뷰의 크기를 계산합니다. – Suiva

+0

실제로 볼 수 없기 때문에 실제로는 볼 수 없습니다. 추가 할보기의 크기는 전체 영역이 아니라 여전히 추가됩니다. – Suiva

+0

ElementAtOrDefault는 linq 확장 메서드입니다. "using System.Linq;"를 추가하면 귀하의 사용에,이 작동합니다. – RonaldV

0

나는이 작업을 전혀 시도하지 말 것을 권장합니다. 대신, 나는 지역을 과밀 (자동 크기 조절, 스크롤링, 탭 등)에 적용 할 수 있도록하는 데 집중할 것입니다.

여기서 일어날 수있는 많은 예기치 않은 일이 있습니다. 예를 들어 뷰가 컨테이너에 의해 결정되는 컨트롤이 있습니다. 영역에 실제로 추가 할 때까지 영역에 추가하려는 뷰의 실제 크기를 알 수 없으므로이 결정을 내리는 것이 중요하지 않습니다.

나는 이것이 당신의 질문에 직접적으로 대답하지 않는다는 것을 안다.하지만 잘하면 그것은 도움이 될 것이다.