2012-09-12 2 views
2

click 이벤트에서 xaml 파일을 호출해야하며 개발을 위해 C#을 사용하고 있습니다. Xaml 파일을 만들고 여기에 디자인 파트를 작성했습니다. 이제이 응용 프로그램에서이 xaml 파일을 호출해야합니다. 나는 다음과 같은무단 액세스 예외가 처리되지 않았습니다.

NavigationService.Navigate(new Uri("/xxx.xaml", UriKind.Relative)); 

을 시도했지만 나에게이 문제 무슨 일이야 다음과 같은 오류,

unauthorized access exception was unhandled. 
Invalid cross-thread access. 

을 준다? .xaml으로 지정된이 화면을 보여줄 필요가있는 내 기능 중 하나 사이에서이 xaml 파일을 호출합니다.

답변

3

백그라운드 스레드에서 Navigate 메서드를 호출하는 것처럼 보입니다. 이 같은 대신 UI 스레드에서 호출 : 댓글에서

Dispatcher.BeginInvoke(() => 
{ 
    NavigationService.Navigate(new Uri("/xxx.xaml", UriKind.Relative)); 
}); 

편집 :

Dispatcher.BeginInvoke(() => 
{ 
    if(MessageBox.Show("message", "title", MessageBoxButton.OKCancel) == MessageBoxResult.OK) 
    { 
     NavigationService.Navigate(new Uri("/xxx.xaml", UriKind.Relative)); 
    } 
}); 
+0

예는 실제로 모든 내용이는 일이 있었다이었다 백그라운드에서 내 응용 프로그램 실행을 시작 TAT 내 응용 프로그램 시작 }} {{{{{{{{{{}}이 메시지 상자의 ok 버튼을 클릭하면 보여줄 필요가있는 곳이 어디 인지요 // void _dll 화면 xxx.xaml. } 이 worker_dowork는 배경 화면에 호출되어 async가 실행될 때까지 실행됩니다. 지금 내가 필요로하는 것은 메시지 상자에서 확인 버튼을 클릭하면 xxx.xaml로 이동해야합니다. 감사합니다. – user1665577

+0

코드를 업데이트했지만 그게 무슨 뜻인지 확실하지 않습니다. Dispatcher 블록 내에서 NavigationService를 사용할 때 여전히 예외가 발생합니까? – keyboardP

+0

없이 I 얻고 다른 오류라고 TAT, 1) 개체 참조가 아닌 정적 필드, 메소드 또는 속성에 필요한 'System.Windows.Navigation.NavigationService.Navigate (선택 System.Uri)' 및 2) 람다 식을 'System.Delegate'형식으로 변환 할 수 없습니다. 위임 형식이 아니기 때문에 – user1665577