C# 如何在Windows应用商店应用程序中显示消息?

C# 如何在Windows应用商店应用程序中显示消息?,c#,windows-8,C#,Windows 8,如何在windows 8应用程序中使用c#like calling MessageBox.Show()在windows phone 7中显示消息框?应该适合您的需要 MessageDialog msgDialog = new MessageDialog("Your message", "Your title"); //OK Button UICommand okBtn = new UICommand("OK"); okBtn.Invoked = OkBtnClick;

如何在windows 8应用程序中使用c#like calling MessageBox.Show()在windows phone 7中显示消息框?

应该适合您的需要

   MessageDialog msgDialog = new MessageDialog("Your message", "Your title");

   //OK Button
   UICommand okBtn = new UICommand("OK");
   okBtn.Invoked = OkBtnClick;
   msgDialog.Commands.Add(okBtn);

   //Cancel Button
   UICommand cancelBtn = new UICommand("Cancel");
   cancelBtn.Invoked = CancelBtnClick;
   msgDialog.Commands.Add(cancelBtn);

   //Show message
   msgDialog.ShowAsync();
你的回电呢

private void CancelBtnClick(IUICommand command)
{
}

private void OkBtnClick(IUICommand command)
{
}


P.S.您可以跟随了解更多信息。

更简单的方法是显示消息文本和“确定”按钮。使用

Windows.UI.Popups
namespace。创建一个方法
messagebox()
该方法应该是

using Windows.UI.Popups;
protected async void messageBox(string msg)
{
      var msgDlg = new Windows.UI.Popups.MessageDialog(msg);
      msgDlg.DefaultCommandIndex = 1;
      await msgDlg.ShowAsync();
}
然后在代码中调用此方法,如

messageBox("Unexpected error held");

对于确认类型的消息框,我的简单方法是:

  var dlg = new MessageDialog("Are you sure?");
  dlg.Commands.Add(new UICommand("Yes", null, "YES"));
  dlg.Commands.Add(new UICommand("No", null, "NO"));
  var op = await dlg.ShowAsync();
  if ((string)op.Id == "YES")
  {
    //Do something
  }
其他花絮:

它出现在现代Windows应用程序中,在应用程序进行Window.Current.Active()调用之前,MessageDialog不会显示,这通常发生在应用程序类的OnLaunched()方法中。如果您试图使用MessageDialog显示启动异常之类的内容,请务必记住这一点

我的测试表明MessageDialog.ShowAsync()实际上可能会等待,但如果尚未调用Window.Current.Active(),则不会显示对话框,因此从代码执行的角度来看,看起来一切正常,但不会显示对话框

如果目标是在启动期间显示异常,我可以想到两个选项(可能还有更多)

  • 捕获异常信息,然后等待在Window.Current.Activate()之后显示它。如果出现异常,应用程序可以从中恢复并继续启动,则此功能可以正常工作。例如,如果还原保存的状态信息时出错,应用程序可能希望向用户报告该错误,但随后继续启动,就像没有保存的状态一样

  • 如果应用程序正在举手并打算终止,但希望让用户知道发生了什么,那么另一种解决方案可能是使用单独的专用代码块/方法,将新的干净框架插入Windows.Current.Content,使用Windows.Current.Activate()激活它,然后调用MessageDialog.ShowAsync()。我还没有尝试过这种方法,所以我不确定是否还需要满足其他条件,比如可能将页面加载到框架中

  • 用于以下页面:

    private async void AppBarButton_Click(object sender, RoutedEventArgs e)
    {
        Windows.UI.Popups.MessageDialog a = new Windows.UI.Popups.MessageDialog("hello this is awth");
        await a.ShowAsync();
    }
    

    MessageDialog类位于哪个命名空间中contained@user1547566我在答案中链接了这个类。难道没有更简单的方法吗?只要在它上面做一个包装,它就会变得更简单。你几乎不应该使用
    async void
    方法。@svick:这是什么原因?@DominikC因为没有办法知道它何时完成,这也使得错误处理几乎不可能。有关详细信息,请参见。