none
WPF+Microsoft Ribbon for WPFにおけるRibbonWindowのClosingイベント RRS feed

  • 質問

  • WPF+Microsoft Ribbon for WPFにおけるRibbonWindowのClosingイベントについて

    どうしても解決できない問題がありましたので解決方法をご存知のかたはご教授いただければ幸いです。

    Closingイベントにて閉じる確認用ダイアログを表示し(はい/いいえ)、「いいえ」が選択された場合

    イベント引数のCancelプロパティにtrueを設定し閉じる操作をキャンセルしているのですが

    ウィンドウ右上の「×」ボタン、ALT+F4、などの操作はキャンセルできるのですが

    ウィンドウ左上のアイコンをダブルクリックする閉じる操作の場合キャンセルできませんでした。

    いろいろ調べてみたのですが通常のWindowだとキャンセルでき、RibbonWindowだとキャンセルできないようです。

    ソースは以下のものになります

            private void RibbonWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
            {
                if (MessageBox.Show(
                        "確認メッセージ",
                        "タイトル",
                        MessageBoxButton.YesNo,
                        MessageBoxImage.Information) != MessageBoxResult.Yes)
                {
                    e.Cancel = true;
                }
            }

    また、以下コードによるWndProcメソッドでメッセージを処理した場合は閉じるの無限ループとなってるようでした(左上アイコンダブルクリックの場合)。

            private void RibbonWindow_Loaded(object sender, RoutedEventArgs e)

    {

                HwndSource source = HwndSource.FromVisual(this) as HwndSource;
                source.AddHook(new HwndSourceHook(WndProc));

    }

            private const int WM_CLOSE = 0x0010;
            private static IntPtr WndProc(IntPtr hwnd, int msg,
                IntPtr wParam, IntPtr lParam, ref bool handled)
            {
                switch (msg)
                {
                    case WM_CLOSE:
                        handled = true;
                        break;
                }
                return IntPtr.Zero;
            }

    なお環境は以下のとおりです

    .NET Framework4 SP1

    Microsoft Ribbon for WPF 4.0.0.11019

    どうぞよろしくお願い致します。

    2012年3月27日 2:32

回答

すべての返信