MessageDialog разбивается на Windows Phone 8.1 с тремя командами

Я пытаюсь добавить MessageDialog в приложение Windows Phone 8.1 (WinRT) с тремя командами. Просмотр документации для MessageDialog:

http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.popups.messagedialog.aspx

В нем говорится, что "Диалог имеет панель команд, которая может поддерживать до трех команд", поэтому я думаю, что это не проблема. Я взял их пример (нашел в документации) и сделал из него простое тестовое приложение, и он отлично работал как на рабочем столе, так и на телефоне Windows. Затем я взял тот же пример и добавил к нему одну команду:

var messageDialog = new MessageDialog("No internet connection has been found.");

// Add commands and set their callbacks; both buttons use the same callback function instead of inline event handlers
messageDialog.Commands.Add(new UICommand(
    "Try again",
    new UICommandInvokedHandler(this.CommandInvokedHandler)));
messageDialog.Commands.Add(new UICommand(
    "Something else",
    new UICommandInvokedHandler(this.CommandInvokedHandler)));
messageDialog.Commands.Add(new UICommand(
    "Close",
    new UICommandInvokedHandler(this.CommandInvokedHandler)));

// Set the command that will be invoked by default
messageDialog.DefaultCommandIndex = 0;

// Set the command to be invoked when escape is pressed
messageDialog.CancelCommandIndex = 1;

// Show the message dialog
await messageDialog.ShowAsync();

Это отлично работает в настольном приложении Windows, но когда я беру один и тот же код и пытаюсь использовать его для приложения для Windows-телефона, у него нет проблем с добавлением третьей команды, но когда она доходит до ожидающего сообщенияDialog.ShowAsync(), он выйдет из строя с необработанным исключением. Интересно, что это не сбой так же, как приложение для настольных компьютеров, когда вы добавляете 4 команды. Для этого он будет генерировать исключение, когда вы попытаетесь добавить 4-ю команду. По телефону у него не будет проблем с этим, но он не будет работать, когда он попытается показать сообщениеDialog.

Я что-то упускаю, или максимальное количество команд на MessageDialog тихо набирается с 3 до 2, когда вы на телефоне?

Ответ 1

вы можете использовать только две команды для следующего события (Windows.UI.Popups.MessageDialog).

Здесь образец.

private async void Button_Click(object sender, RoutedEventArgs e)
{
   //Message Box.
   MessageDialog msg = new MessageDialog("Here the content/string.", "Hello!");

   //Commands
   msg.Commands.Add(new UICommand("Ok", new UICommandInvokedHandler(CommandHandlers)));
   msg.Commands.Add(new UICommand("Quit", new UICommandInvokedHandler(CommandHandlers)));

   await msg.ShowAsync();
   //end.
}

public void CommandHandlers(IUICommand commandLabel)
{
   var Actions = commandLabel.Label;
   switch (Actions)
   {
       //Okay Button.
       case "Ok" :
           MainpageName.Focus(Windows.UI.Xaml.FocusState.Pointer);
         break;
       //Quit Button.
       case "Quit" :
           Application.Current.Exit();
         break;
       //end.
   }
}