I'm trying to add a MessageDialog to a windows phone 8.1 app (WinRT) with 3 commands. Looking at the documentation for MessageDialog:
http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.popups.messagedialog.aspx
It says that "The dialog has a command bar that can support up to three commands", so I should think that wouldn't be a problem. I took their example (found on the documentation) and made a simple test app out of it, and it worked perfectly fine on both desktop and on windows phone. Then, I took the same example and added a single command to it:
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();
This works fine on a windows desktop app, but when I take the exact same code and try to use it for a windows phone app, it has no problem adding the 3rd command but when it gets to the await messageDialog.ShowAsync() line, it will crash with an unhandled exception. Interestingly, it does not crash in the same manner as a desktop app does when you add 4 commands. For that, it will throw the exception when you try to add the 4th command. On the phone, it won't have a problem with that, but it won't work when it tries to show the messageDialog.
Am I missing something, or does the maximum number of commands on a MessageDialog quietly get bumped down from 3 to 2 when you're on a phone?