在Windows Phone 8.1上,MessageDialog用3个命令中断

本文关键字:MessageDialog 3个 命令 中断 Windows Phone | 更新日期: 2023-09-27 18:12:19

我试图用3个命令添加一个MessageDialog到windows phone 8.1应用程序(WinRT)。查看MessageDialog的文档:

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

它说"对话框有一个命令栏,最多可以支持三个命令",所以我应该认为这不是问题。我以他们的例子(在文档中找到)为例,制作了一个简单的测试应用,它在桌面和windows phone上都运行良好。然后,我使用相同的示例并向其添加一个命令:

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手机应用程序时,添加第三个命令没有问题,但是当它到达await messageDialog.ShowAsync()行时,它会因未处理的异常而崩溃。有趣的是,当你添加4个命令时,它不会像桌面应用程序那样崩溃。因此,当您尝试添加第4条命令时,它将抛出异常。在手机上,它不会有这个问题,但是当它试图显示messageDialog时,它不会工作。

我错过了什么,或者最大数量的命令在一个MessageDialog悄悄地从3到2,当你在打电话?

在Windows Phone 8.1上,MessageDialog用3个命令中断

对于以下事件Windows.UI.Popups.MessageDialog,只能使用两个命令。

这里有一个例子…

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.
   }
}