2012-05-15 21 views
6

標準のMessageBoxをアプリケーションのモーダルウィンドウとして表示しようとしていますが、モーダルではありません。 最初の呼び出しでは、以下のコードでは標準のMessageBoxを表示していますが、これはモーダルである必要があります。 2番目の呼び出しでは、メインウィンドウのディスパッチャを取得してもモーダルとして表示されません。WPFアプリケーションのModal MessageBox

Dispatcher disp = Application.Current.MainWindow.Dispatcher; 
//First call, shown MODAL 
if (this.messageService.ShowYesNo("Do you want to update the Word document, this will regenerate inspectiondata for document", "") == MessageBoxResult.Yes) 
{ 
    using (new WaitCursor()) 
    { 
     _eventAggregator.GetEvent<ProgressBarRequestShow>().Publish(""); 
     worker = new BackgroundWorker(); 

     worker.DoWork += delegate(object s, DoWorkEventArgs args) 
     { 
      AITUpdateProgressDelegate update = new AITUpdateProgressDelegate(UpdateProgress); 
      this.docService.UpdateWorddocument(this.docService.GetCurrentDocumentFilePath, update); 
     }; 

     worker.RunWorkerCompleted += delegate(object s, RunWorkerCompletedEventArgs args) 
     { 
      try 
      { 
       // Second call NOT MODAL 
       disp.Invoke((Action)delegate() 
       { 
        this.messageService.ShowInformation("Document generated, choose Open in Word in main toolbar to show document", ""); 
       }); 
       _eventAggregator.GetEvent<ProgressBarRequestHide>().Publish(""); 
      } 
      finally 
      { 
      } 
     }; 
     worker.RunWorkerAsync(); 
    } 
} 
+0

なぜカスタムメッセージボックスを作成するためにWPFウィンドウを使用しないのですか? –

+0

私はもう少しドキュメントを勉強する必要があります。情報メッセージボックスはデフォルトでモーダルではなく、所有者を設定する必要があります – klashagelqvist

答えて

2

Thisはあなたが探しているもののようです。メッセージボックスの呼び出しには、「所有者」パラメータが含まれています。私は前にやっていたコードでも同様のコンセプトを使用しており、ウィンドウをモーダルとして示しています。サンプルコードは、リンクからダウンロードすることもできます。

関連する問題