WPF TextBox Abfangen von RoutedUIC-Befehlen
Ich versuche, in meiner WPF - Anwendung die Tastaturkürzel "Rückgängig" / "Wiederherstellen" zum Laufen zu bringen (ich habe meine eigene benutzerdefinierte Funktionalität unter Verwendung von implementiert)Befehlsmuster). Es scheint jedoch, dass dieTextBox
Die Steuerung fängt meinen RoutedUICommand "Rückgängig" ab.
Was ist die einfachste Möglichkeit, dies zu deaktivieren, damit ich Strg + Z im Stammverzeichnis meines UI-Baums abfangen kann? Ich möchte vermeiden, eine Tonne Code / XAML in jedes zu setzenTextBox
wenn möglich in meiner Bewerbung.
Im Folgenden wird das Problem kurz erläutert:
<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!"); }
}
}