2012-05-15 20 views
6

Uygulamamda standart bir MessageBox'ı standart bir pencere olarak göstermeye çalışıyorum, ancak kalıcı olmayan bir şekilde biter. İlk çağrıda, aşağıdaki kodda olması gerektiği gibi modal olarak gösterilen standart bir MessageBox gösteriyorum. İkinci çağrıda, ana pencere dağıtıcısını alsam bile, modal olarak gösterilmez.WPF uygulamasında Modal İleti Kutusu

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

Özel mesaj kutusu oluşturmak için WPF Penceresini neden kullanmıyorsunuz? –

+0

Belgeleri biraz daha incelemeye ihtiyacım var, bilgi mesaj kutusu varsayılan olarak modal değil, birinin sahibi ayarlanması gerekiyor – klashagelqvist

cevap

2

This Aradığınız ne gibi görünüyor. Mesaj kutusu için çağrı bir 'sahip' parametresi içerir. Daha önce yapmış olduğum kodda benzer bir kavram kullandım ve pencereleri modal olarak gösterdim. Örnek kod bağlantıdan da indirilebilir.