2014-07-10 26 views
12

Próbuję dodać MessageDialog do aplikacji Windows Phone 8.1 (WinRT) z 3 poleceniami. Patrząc na dokumentacji MessageDialog:WiadomośćDialog łamie się na Windows Phone 8.1 z 3 komendami

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

Mówi, że „dialog ma pasek poleceń, które może obsługiwać do trzech poleceń”, więc należy myśleć, że nie ja byłby problem. Wziąłem ich przykład (znaleziony w dokumentacji) i zrobiłem z niego prostą aplikację testową, która działała doskonale zarówno na komputerze stacjonarnym, jak i na telefonie z systemem Windows. Następnie wziąłem ten sam przykład i dodania jednego polecenia do niego:

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

To działa prawidłowo w aplikacji pulpitu Windows, ale kiedy biorę dokładnie ten sam kod i spróbuj użyć go do aplikacji Windows Phone, nie ma problemu z dodaniem trzeciego polecenia, ale gdy dojdzie do oczekującej linii messageDialog.ShowAsync(), nastąpi awaria z nieobsługiwanym wyjątkiem. Co ciekawe, nie powoduje awarii w taki sam sposób, jak robi to aplikacja komputerowa po dodaniu 4 poleceń. W tym celu wyrzuci wyjątek podczas próby dodania czwartego polecenia. Przez telefon nie będzie z tym problemu, ale nie zadziała, gdy spróbuje pokazać komunikat messageDialog.

Czy brakuje mi czegoś, czy też maksymalna liczba poleceń w MessageDialog po cichu spada z 3 na 2, gdy korzystasz z telefonu?

+0

myślę, że utknęliśmy z maksymalnie 2 komend w domyślnym MessageDialog na WinRT do telefonu. –

+0

OK, dziękuję za odpowiedź. Mogę wymyślić sposób, żeby sobie z tym poradzić, byłoby miło, gdyby to było zawarte w dokumentacji, chociaż ... – Carson

Odpowiedz

17

można używać tylko dwóch poleceń dla następującego zdarzenia, (Windows.UI.Popups.MessageDialog).

Oto próbka ..

private async void Button_Click(object sender, RoutedEventArgs e) 
{ 
    //Message Box. 
    MessageDialog msg = new MessageDialog("Here's 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. 
    } 
} 
Powiązane problemy