Как отобразить окно сообщения в приложениях Windows 8 с помощью С#, например, вызвать MessageBox.Show() в Windows Phone 7?
Как отобразить сообщение в приложениях Windows Store?
Ответ 1
Класс MessageDialog должен соответствовать вашим потребностям.
Ответ 2
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. Вы можете следовать этому руководству для более подробной информации.
Ответ 3
Мой простой способ, для полей сообщения типа подтверждения:
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
}
Ответ 4
Для упрощения, просто для отображения текста сообщения и кнопки OK. Используйте пространство имен 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");
Ответ 5
Дополнительный лакомый кусочек:
В современном приложении Windows приложение MessageDialog не будет отображаться до того, как ваше приложение совершит свой вызов Window.Current.Active(), что обычно происходит в методе OnLaunched() класса приложения. Если вы пытаетесь использовать MessageDialog для отображения чего-то вроде начального исключения, это важно иметь в виду.
Мое тестирование указывает на MessageDialog.ShowAsync() может на самом деле ждать, но без отображения диалогового окна, если Window.Current.Active() еще не был вызван, поэтому с точки зрения выполнения кода это будет выглядеть так, как будто все работает, но но диалог не отображается.
Если цель заключается в отображении исключения во время запуска, я могу представить два варианта (их может быть больше).
-
Захватите информацию об исключении, а затем дождитесь ее отображения до тех пор, пока не появится Window.Current.Activate(). Это может работать, если исключение таково, что приложение может восстановить его и продолжить с запуском. Например, если есть ошибка восстановления сохраненной информации о состоянии, приложение может захотеть сообщить об этом пользователю, но затем продолжить запуск, как если бы не было сохраненного состояния.
-
Если ситуация такова, что приложение бросает руки и намеревается прекратить работу, но хочет сообщить пользователю, что произошло, тогда другое решение может состоять в том, чтобы иметь отдельный выделенный блок/метод кода, который подключается новый чистый кадр в Windows.Current.Content, активирует его с помощью Windows.Current.Activate(), а затем вызывает MessageDialog.ShowAsync(). Я не экспериментировал с этим подходом, поэтому я не уверен, что нужно выполнить другие условия, например, погрузить страницу в кадр.
Ответ 6
используйте для страницы, например:
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();
}