如何在Windows应用商店应用中显示消息?

时间:2012-09-15 07:26:32

标签: c# windows-8

如何使用c#在Windows 8应用中显示消息框,如在Windows Phone 7中调用MessageBox.Show()?

6 个答案:

答案 0 :(得分:48)

   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。您可以关注this tutorial了解更多信息。

答案 1 :(得分:26)

MessageDialog class应该符合您的需求。

答案 2 :(得分:12)

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

  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
  }

答案 3 :(得分:8)

为了更简单,只需显示消息文本和确定按钮即可。使用Windows.UI.Popups命名空间。创建方法应该

的方法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");

答案 4 :(得分:2)

额外的花絮:

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

我的测试表明MessageDialog.ShowAsync()可能实际上等待但是如果还没有调用Window.Current.Active(),那么没有显示对话框,所以从代码执行的角度看,它看起来一切正常但是但是没有显示任何对话框。

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

  1. 捕获异常信息,然后等待,直到Window.Current.Activate()之后。如果异常使应用程序可以从中恢复并继续启动,则此方法可以正常工作。例如,如果恢复已保存的状态信息时出错,则应用可能希望向用户报告该信息,然后继续启动,就像没有保存状态一样。

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

答案 5 :(得分:0)

用于以下页面:

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();
}