Windows.Popups.MessageDialogが地味に使えない[Mac][C#][Xamarin][Uno Platform]

いたって標準的なメッセージボックスですよね。
これがMacで、アプリがActiveな状態じゃないと表示されない。
処理は走っているんだけど、見た目に反映されない。

開発してるアプリがFinderからのドロップを受け付けているのですが、サクサクとドロップすると、アプリがActiveになる前にドロップ処理が走ってしまい、メッセージが表示されない。
他にも、とても長い処理の間、他の作業をしてしまうと、完了メッセージが表示されない。

これが、メッセージボックスを表示する前にActive化すれば良いか、と下記2行足しても改善しない。
なんでや。

NSApplication.SharedApplication.ActivateIgnoringOtherApps(true);
this.View.Window?.MakeKeyAndOrderFront(this);

ただ、Xamarin.Mac.AppKit.NSAlertならちゃんと出るので、こっちを使えばOKっぽい。

/// <summary>
/// OKボタンのみのメッセージ表示
/// </summary>
/// <param name="msg">メッセージ本文</param>
/// <param name="style">メッセージ種別</param>
private void ShowOKOnlyMessageBox(string msg, NSAlertStyle style)
{
    var alert = new NSAlert()
    {
        AlertStyle = style,
        InformativeText = msg,
        MessageText = "",
    };
    alert.AddButton(Consts.DialogButtonTextOK);
    alert.RunModal();
}

他にもニッチなIT関連要素をまとめていますので、よければ一覧記事もご覧ください。

返信を残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)