Я попытался реализовать DialogManager, как описано here. Я не использую калибр, поэтому я немного переработал, и это уже не SimpleDialog, а CustomDialog, но изменений не было.ShowMetroDialogAsyncdoesn't показывает диалог при ожидании задачи
Так что теперь, когда я нажимаю кнопку, которая вызывает 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 является модальным и отображается на оверлете окна Owning. – Peter
Диалог mahApps по дизайну ** не ** модальный, это асинхронный, вы просто не можете щелкнуть что-нибудь еще, потому что оно лежит перед окном. Но в любом случае, да, вы правы, я мог бы просто использовать главное окно, хотя я не думаю, что это ничего не меняет, потому что я снова получаю экземпляр главного окна. –