2

クリック イベントから xaml ファイルを呼び出す必要があり、開発に c# を使用しています。Xaml ファイルを作成し、その中のデザイン パーツを処理したら、アプリケーションからこの xaml ファイルを呼び出す必要があります。私は次のことを試しました

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

しかし、それは私に次のエラーを与えます、

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

これで何がうまくいかないのですか?で指定されたこの画面を表示する必要がある関数の 1 つの間に、この xaml ファイルを呼び出しています.xaml

4

1 に答える 1

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));
   }
});
于 2012-09-12T11:48:19.763 に答える