組み込みコマンドを使用していない理由がわかりません。
ApplicationCommands.Undo
、 と
ApplicationCommands.Redo
これらの組み込みコマンドを使用することには、いくつかの利点があります。
- それらのキー バインディングは、ロケールに基づいて自動的に設定されます ( Ctrl+ZとCtrl+Yは、すべてのロケールでデフォルトの取り消し/やり直しキーではない場合があります)。
- 彼らは名誉を与えられ
TextBox
、RichTextBox
- 問題なく WPF <-> WinForms 境界を越えます
- アクセシビリティ インターフェイスで動作します
- それらは、それらを持つキーボードの組み込みの「元に戻す」キーによって呼び出されます
したがって、可能であれば、コード内の適切な場所にApplicationCommands
登録するだけで組み込みを使用する必要があります。CommandBindings
詳しくは
WPF と WinForms の両方で組み込みの元に戻す/やり直し機能を使用すると、機能します。たとえば、次の例では、RichTextBoxes
WinForms ベースと WPF ベースの 2 つの が作成され、両方とも完全な元に戻す/やり直し機能を備えています。
<UniformGrid Columns="2"
xmlns:winforms=
"clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms">
<WindowsFormsHost >
<winforms:RichTextBox />
</WindowsFormsHost>
<RichTextBox />
</UniformGrid>
これは機能し、あなたのものは機能しないため、何が違うのかを理解してください. コメントで、カスタム WPF を削除しようとしたと述べましたInputBindings
。WinForms側でも同じことをしましたか? そうでない場合は試してみてください。それができない場合は、質問を編集してそのコードも表示してください。
ApplicationCommands
独自の に再マップできることに注意しRoutedCommands
てCommandBinding
くださいRoutedCommand
。