WPF应用程序中的模态MessageBox

时间:2012-05-15 09:24:36

标签: c# wpf messagebox

我正在尝试在我的应用程序中将标准MessageBox显示为模式窗口,但最终会以非模态显示。 在第一个调用中,在下面的代码中,我显示了一个标准的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();
    }
}

1 个答案:

答案 0 :(得分:2)

This看起来像你在找什么。消息框的调用包括“所有者”参数。我在代码中使用了类似的概念,我以前做过,并将窗口显示为模态。示例代码也可以从链接下载。