我試圖實現像here那樣的DialogManager。我沒有使用caliburn,所以我重構了一下,也不再是SimpleDialog,而是CustomDialog,但沒有大的變化。ShowMetroDialogAsync在等待任務時不顯示對話框
所以現在當我點擊一個叫DialogManager.ShowDialog
的按鈕並且等待task.Wait()
產生的任務時,應用程序只會凍結(等待等待),但不顯示對話框。我試圖調試,但它工作正常,直到行
await Application.Current.Windows.OfType<MetroWindow>().First().ShowMetroDialogAsync(dialog);
。對話框是有效的BaseMetroDialog
,我從Application.Cur...
調用中獲得正確的窗口。當我僅僅撥打ShowMessageAsync
時,也會發生這種情況,所以問題似乎與呼叫和等待任務有關。有沒有辦法阻止下面的執行(強制對話框是模態)?
如果您需要其他信息,請評論,我會延長這個問題,但現在我不知道要顯示什麼,除了已經鏈接在一開始的代碼。
爲什麼不使用Application.Current.MainWindow.ShowMetroDialogAsync ...?你的'Application.MainWindow'不是'MetroWindow'嗎?請注意,通過設計,MahApps的對話框是模態的,並顯示在所屬窗口的疊加層上。 – Peter
mahApps對話框是由設計**不是**模式,它是異步的,你只是不能點擊任何東西,因爲它位於窗口前面。但無論如何,是的,你是對的我可以使用主窗口,但我不認爲這會改變任何東西,因爲我也得到主窗口實例。 –