如何使用c#在Windows 8应用中显示消息框,如在Windows Phone 7中调用MessageBox.Show()?
答案 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(),那么没有显示对话框,所以从代码执行的角度看,它看起来一切正常但是但是没有显示任何对话框。
如果目标是在启动期间显示异常,我可以考虑两个选项(可能还有更多)。
捕获异常信息,然后等待,直到Window.Current.Activate()之后。如果异常使应用程序可以从中恢复并继续启动,则此方法可以正常工作。例如,如果恢复已保存的状态信息时出错,则应用可能希望向用户报告该信息,然后继续启动,就像没有保存状态一样。
如果情况是这样的应用程序正在举手并打算终止,但是想让用户知道发生了什么,那么另一种解决方案可能是拥有一个单独的专用代码块/方法来插入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();
}