2014年8月21日木曜日

RibbonWindowで、左上のアイコンダブルクリック→終了してしまう

ウィンドウを閉じる方法はいくつも有りますが、RibbonWindowを使う場合は注意が必要です。
  • 左上のアイコンをダブルクリック → 【画面と一緒に、アプリが終了します】
  • プログラムで閉じる
  • 右上の赤バッテンで閉じる

回避策:

言葉で説明が難しい。。。ウィンドウごとに、自分でComamndBindingを追加するらしいです。

参考: http://social.msdn.microsoft.com/Forums/ja-JP/c9c96889-44bd-474a-a795-d56335fcdc0c/wpfmicrosoft-ribbon-for-wpfribbonwindowclosing?forum=wpfja

コード例:

AppクラスにInstallNoexitメソッドを追加。

    public partial class App : Application {
        public static void InstallNoexit(Microsoft.Windows.Controls.Ribbon.RibbonWindow win) {
            // http://social.msdn.microsoft.com/Forums/vstudio/en-US/c91438bc-4b12-47b2-89e2-13817b3689e4/ribbonwindow-doubleclick-causing-application-shutdown?forum=wpf
            win.CommandBindings.Add(
                new System.Windows.Input.CommandBinding(
                    System.Windows.Input.ApplicationCommands.Close,
                    (sender, e) => {
                        ((Microsoft.Windows.Controls.Ribbon.RibbonWindow)sender).Close();
                    }));
        }
コンストラクタで、App.InstallNoexit(this);のように、呼び出す。
    public partial class T見積INPUT : RibbonWindow {
        public T見積INPUT() {
            InitializeComponent();
            App.InstallNoexit(this);