2012-05-15 15 views
6

Estoy tratando de mostrar un MessageBox estándar como una ventana modal en mi aplicación, pero termina como no modal. En la primera llamada, en el siguiente código estoy mostrando un MessageBox estándar que se muestra modal, como debería. En la segunda llamada, no se muestra como modal, incluso si tomo el despachador de la ventana principal.Modal MessageBox en la aplicación WPF

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

¿por qué no utiliza la ventana de WPF para crear un buzón personalizado? –

+0

Necesito estudiar la documentación un poco más, un cuadro de mensaje de información no es modal por defecto, uno tiene que establecer el propietario – klashagelqvist

Respuesta

2

This parece que es lo que estás buscando. La llamada para el cuadro de mensaje incluye un parámetro 'propietario'. He usado un concepto similar en el código que he hecho antes y he mostrado las ventanas como modales. El código de muestra también se puede descargar desde el enlace.

Cuestiones relacionadas