以下のようなOK/Cancelのコントロールを作成して各画面に配置していたのですが、OKといったらAlt+Oのショートカットキーでしょうと。
素直にXAMLでWindow.InputBindingsを指定して回るのも手間だなあということで、以下のようにしてみました。
public OkCancelPanel() { InitializeComponent(); Loaded += OnLoaded; } private void OnLoaded(object sender, RoutedEventArgs e) { var parentWindow = Window.GetWindow(this); if (parentWindow != null && OkCommand != null) { parentWindow.InputBindings.Add(new KeyBinding(OkCommand, Key.O, ModifierKeys.Alt)); } }
コンストラクタの時点ではウインドウを取得するとnullとなるので、Loadedのタイミングで設定しています。