0

在 WindowsStoreApps 中,我有三个 MessageDialogs,必须通过单击每个 MessageDialog 中的一个按钮来逐一显示。在执行此操作时,我得到一个“System.UnauthorizedAccessException”。似乎我们无法在打开另一个 messageDialog 时打开另一个 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.unauthorised 异常消息dialog.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
    }
4

2 回答 2

0

如果你真的想要这个使用这种模式(我真的不推荐),你可以设置一个计时器在对话框关闭后的某个时间给你打电话,然后你就可以调用另一个对话框来打开。

于 2014-04-10T18:05:15.617 回答
0

MessageDialog 旨在阻止您的应用程序中的所有其他活动,并强制用户响应您的请求。因此同时触发 3 个消息对话框似乎不合逻辑。这很可能是您获得异常的原因。

因为您的代码示例并不清楚您要通过 3 个消息对话框实现的目标,所以我将提出一些您可能喜欢的方法:

1 显示一种自定义类型的消息对话框,您可以在其中使用视图状态来区分用户在继续之前必须回答的不同问题。

2 显示一个消息对话框,其中显示所有 3 个问题和多个按钮来回答变体?

最后一个不是最好的解决方案。如果您详细说明您到底想实现什么,也许我们可以提出一些更好的解决方案来解决您的问题。

于 2014-04-10T14:43:14.320 回答