Отображение 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 вопроса и несколько кнопок для ответа на варианты?

Последнее не самое лучшее решение. Если вы немного расскажете о том, чего именно пытаетесь достичь, возможно, мы сможем найти более эффективные решения для решения вашей проблемы.

Если вы действительно хотите использовать этот шаблон (который я не очень рекомендую), вы можете установить таймер, который будет вызывать вас через некоторое время после закрытия диалога, и тогда вы сможете вызвать другой диалог для открытия.

Другие вопросы по тегам