コードを貼り付ける必要はないと思います。これはC#です。
基本的に、MessageDialog を作成して表示し、UICommandInvokedHandler をボタンから呼び出します。
その Handler 内で、別の MessageDialog.ShowAsync が呼び出される可能性のある他の項目を実行します。ただし、この 2 番目の呼び出しでは Unathorized Access Exception が発生します。
UI THreadで新しいMessageDialogを強制的に作成しようとするイベントを発生させるなど、いくつかのことを試しましたが、同じことをしました。
これを回避する方法について何か提案はありますか? 大まかに言えば、「よろしいですか?はい/いいえ」と言うダイアログを表示しようとしています。はいの場合、実行の根幹を行い、他のダイアログをポップアップしてランダムなエラー情報を提供できます。
OK コード:
public static async void WriteMessageDialog(string message, string buttonText1, UICommandInvokedHandler handler1, string buttonText2, UICommandInvokedHandler handler2)
{
MessageDialog msgDlg = new MessageDialog(message);
msgDlg.Commands.Add(new UICommand(buttonText1, handler1));
msgDlg.Commands.Add(new UICommand(buttonText2, handler2));
// Set the default button to be enabled and default on escape key pressed
msgDlg.DefaultCommandIndex = 0;
msgDlg.CancelCommandIndex = 0;
// Show the window
await msgDlg.ShowAsync();
}
後で.....
// THey original Message Dialog
RTUtilities.WriteMessageDialog(
_resourceLoader.GetString("DetelePersonConfirm"),
_resourceLoader.GetString("Delete"),
new UICommandInvokedHandler(this.CommandDeletePersonHandler), _resourceLoader.GetString("Cancel"),
new UICommandInvokedHandler(this.CommandCancelHandler));
これを呼び出します.....
private async void CommandDeletePersonHandler(IUICommand command)
{
MessageDialog msgDlg = new MessageDialog(_resourceLoader.GetString("DeleteIndividualError"));
await msgDlg.ShowAsync();
}