WPF TextBox Intercepting RoutedUICommands

Próbuję uzyskać skróty klawiaturowe Undo / Redo działające w mojej aplikacji WPF (mam własną niestandardową funkcjonalność zaimplementowaną przy użyciuWzór polecenia). Wydaje się jednak, żeTextBox kontrola przechwytuje moją komendę „Undo” RoutedUIC.

Jaki jest najprostszy sposób na wyłączenie tego, aby móc przechwytywać Ctrl + Z w katalogu głównym mojego drzewa interfejsu? Chciałbym uniknąć wkładania do każdego tony kodu / XAMLTextBox w mojej aplikacji, jeśli to możliwe.

Poniżej krótko przedstawiono problem:

<Window x:Class="InputBindingSample.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:loc="clr-namespace:InputBindingSample"
    Title="Window1" Height="300" Width="300">
    <Window.CommandBindings>
        <CommandBinding Command="loc:Window1.MyUndo" Executed="MyUndo_Executed" />
    </Window.CommandBindings>
    <DockPanel LastChildFill="True">
        <StackPanel>
            <Button Content="Ctrl+Z Works If Focus Is Here" />
            <TextBox Text="Ctrl+Z Doesn't Work If Focus Is Here" />
        </StackPanel>
    </DockPanel>
</Window>
using System.Windows;
using System.Windows.Input;

namespace InputBindingSample
{
    public partial class Window1
    {
        public static readonly RoutedUICommand MyUndo = new RoutedUICommand("MyUndo", "MyUndo", typeof(Window1),
            new InputGestureCollection(new[] { new KeyGesture(Key.Z, ModifierKeys.Control) }));

        public Window1() { InitializeComponent(); }

        private void MyUndo_Executed(object sender, ExecutedRoutedEventArgs e) { MessageBox.Show("MyUndo!"); }
    }
}

questionAnswers(6)

yourAnswerToTheQuestion