뷰 관리를 위해 Prism 4.0을 사용하는 이미 존재하는 .NET 애플리케이션에서 몇 가지를 변경하려고합니다. 나는 .NET, WPF, Prism에 대해 많이 모른다.이 질문이 멍청한 것이라면 미안하다. 기본적으로 내 상황은 이것이다 :프리즘, WPF 페이지가로드 될 때 알아보기
A 버튼은 새 페이지를 밀어 클릭 된 다음 CreateGraphCommandHandler 방법에
private void CreateGraphCommandHandler()
{
// Request navigation
RegionManager.RequestNavigate(RegionNames.MainRegion, ScreenNames.GraphView);
EventAggregator.GetEvent<CreateGraphMessage>().Publish(SelectedChart);
}
, 그것은 기본적으로 해당 데이터 포인트를 얻고 형 FrameWorkElement의 도표를 작성합니다. Visifire라는 타사 라이브러리를 사용하여 내가 믿는 플롯을 렌더링합니다. 그런 다음 이미지를 저장하고 다음 페이지로 이동하여 더 많은 차트를 확인하는 버튼이 있습니다. 내가 말할 수있는 것과 그래서
void SaveUsingEncoder(FrameworkElement visual, string fileName, BitmapEncoder encoder)
{
int aheight = (int)visual.ActualHeight;
int awidth = (int)visual.ActualWidth;
RenderTargetBitmap bitmap = new RenderTargetBitmap(
awidth,
aheight,
96,
96,
PixelFormats.Pbgra32);
bitmap.Render(visual);
BitmapFrame frame = BitmapFrame.Create(bitmap);
,이 호출이 현재 화면에 렌더링 무슨 저장 : 이미지의 저장의
일부처럼 보인다.
사용자가 원하는 데이터 세트를 생성 할 수있는 모든 차트를 생성해야하는 새로운 요구 사항이 있습니다. 따라서 기본적으로 모든 화면을 통과하고 데이터를 차트로 작성하여 적절한 위치에 저장하십시오. 내가 겪고있는 문제는 다음 그림이 첫 번째 플롯을 생성하기 위해 푸시되면 플롯이 렌더링을 완료하기 전에 Save가 호출 된 것입니다. 화면이 플롯이 생성 된 페이지에 푸시됩니다
은이 불려갑니다 :
EventAggregator.GetEvent<CreateGraphMessage>().Subscribe(CreateGraphHandler);
그래서 나는 CreateGraphHandler 방법의 말에, 난 그냥 SaveChart를 호출 할 수 있다고 생각() 메서드 (버튼 누름에서 호출 된 것과 같은 메서드). 문제는 SaveUsingEncoder 메서드가 호출되면 FrameworkElement visual이 null 인 것입니다. 따라서 페이지가로드되지 않고 오류를 저장한다고 가정합니다. SaveChart()를 호출하기 전에이 페이지가 차트로드를 마칠 때까지 기다리는 방법이 있는지 궁금합니다. 미리 감사드립니다.
나를 시작할 수 있도록 코드 스 니펫이 있습니까? 감사. – Crystal