Отображение MessageDialogs один за другим в WindowsStoreApps с помощью C#
В WindowsStoreApps у меня есть три MessageDialogs, которые нужно показывать по одному, нажимая кнопку в каждом MessageDialog. При этом я получаю "System.UnauthorizedAccessException". Кажется, что мы не можем открыть еще один messageDialog, пока один открыт. Есть возможность закрыть предыдущее диалоговое окно при открытии следующего? или может кто-нибудь предложить мне идею, как справиться с этой проблемой.
MessageDialog md = new MessageDialog("Have you been enjoying your experience with " + Modules.Title + " ?");
UICommand btn_ntreally = new UICommand("Not Really");
md.Commands.Add(btn_ntreally);
btn_ntreally.Invoked += btn_ntreally_invoked;
UICommand btn_yeah = new UICommand("Yeah!");
md.Commands.Add(btn_yeah);
btn_yeah.Invoked += btn_yeah_invoked;
md.ShowAsync();
Я получаю system.una вторизованное исключение messagedialog.showasync.
private async void btn_yeah_invoked(IUICommand command)
{
MessageDialog md = new MessageDialog("Deal is deal");
UICommand btn_Sure_invoked = new UICommand("Sure");
md.Commands.Add(btn_Sure_invoked);
btn_ntreally.Invoked += btn_Sure_invoked;
UICommand btn_yeah = new UICommand("No thanks!");
md.Commands.Add(btn_tnks);
await md.ShowAsync(); //getting system.UnauthorizedAccessException here
}
private async void btn_Sure_invoked(IUICommand command)
{
UICommand btn_rateAppsure = new UICommand("Yes!");
md.Commands.Add(btn_rateAppsure);
btn_rateAppsure.Invoked += btn_rateAppsure_invoked;
UICommand btn_rateNothanks = new UICommand("No.Thanks");
md.Commands.Add(btn_rateNothanks);
await md.ShowAsync(); //getting system.UnauthorizedAccessException here
}
2 ответа
MessageDialog предназначен для того, чтобы блокировать все другие действия в вашем приложении и заставлять пользователя реагировать на действие вашего запроса от него. Так что не представляется логичным одновременно запускать 3 сообщения. Это, скорее всего, причина, по которой вы получили исключение.
Поскольку в вашем примере кода не очень ясно, чего вы пытаетесь достичь с помощью 3 сообщений, я предложу несколько подходов, которые могут вам понравиться:
1 Покажите диалоговое окно с сообщениями нестандартного типа, в котором вы используете состояния просмотра, чтобы различать различные вопросы, на которые пользователь должен ответить, прежде чем он сможет продолжить.
2 Показать сообщение, где показаны все 3 вопроса и несколько кнопок для ответа на варианты?
Последнее не самое лучшее решение. Если вы немного расскажете о том, чего именно пытаетесь достичь, возможно, мы сможем найти более эффективные решения для решения вашей проблемы.
Если вы действительно хотите использовать этот шаблон (который я не очень рекомендую), вы можете установить таймер, который будет вызывать вас через некоторое время после закрытия диалога, и тогда вы сможете вызвать другой диалог для открытия.