2012-02-03 6 views
0

이것이 정말 간단하다고 확신하지만, 어떻게해야하는지 알 수 없습니다.WPF에서 캔버스 높이 가져 오기

저는 탭 컨트롤의 두 번째 탭에 캔버스가 있습니다. 다른 메서드가 실행될 때까지 탭이 먼저 비활성화되어 탭이 활성화되고 캔버스에 결과를 플롯하려고합니다.

캔버스에서 플롯의 크기를 조절하고 중심에 배치 할 수 있으면 좋겠고 실제로 치수를 가져와야합니다.

문제는 내가 처음 결과를로드 할 때 캔버스가있는 탭이 아직 활성화되지 않았으며 캔버스의 ActualHeight 및 ActualWidth가 모두 0입니다. 캔버스를 양방향으로 늘려서 폭과 높이는 NaN입니다. 기본적으로 나는 플롯의 크기를 조정하는 데 필요한 치수를 얻는 것에 대한 바인드에 있습니다 ... 탭으로 전환하기 전에이 값을 얻을 수있는 방법이 있습니까?

분명히 "그래프를 다시 스케일하려면 여기를 클릭하십시오"라는 버튼이있는 것처럼 절름발이 솔루션을 피하고 싶습니다. 사용은 탭으로 전환하여 결과를 가져와야합니다.

+0

두 번째 탭을 사용하지 않도록 설정해야합니까? 탭을 활성화 된 상태로 유지하는 것이 더 쉬울 수도 있으며 무언가가 그려 질 때까지 캔버스에 기본 그래픽 (빈 그림 일 수도 있음) 만 표시하면됩니다. 이렇게하면 이러한 상황을 다루는 복잡함을 피할 수 있습니다. –

+0

좋은 지적입니다. 일반적으로 데이터를 준비하지 않을 때 사용자가 컨트롤을 클릭 할 때 처리 할 오류 잡기 코드를 줄이기 위해 가능한 한 오랫동안 사용할 수없는 것들을 두는 것이 유리합니다 ... 저는 캔버스 문제에 대한 해결책을 찾은 것 같습니다. 그래도. 그냥 테스트 해봐. –

답변

2

Canvas의 SizeChanged 이벤트를 다른 방식으로 처리해야합니다 (이벤트 대 명령 연결 또는 코드 숨김). 이 이벤트가 발생하면 캔버스 'ActualHeight 및 ActualWidth를 가져 와서 그에 따라 그래프의 크기를 조정하십시오.

+0

위의 내 의견에서 언급 한 해결 방법입니다. 지금까지 일하는 것 같습니다. –