<Window x:Class="CommandDemo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:CommandDemo"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<StackPanel x:Name="stackpanel" >
<Button x:Name="button1" Content="send command"></Button>
<TextBox x:Name="textboxA" Margin="5,0" Height="100"></TextBox>
<TextBox x:Name="textboxB" Margin="5,0" Height="100"></TextBox>
</StackPanel>
</Grid>
</Window>
C# 代码
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
this.InitializeCommand();
}
private RoutedCommand ClearCmd = new RoutedCommand("clear", typeof(MainWindow));
private void InitializeCommand()
{
this.ClearCmd.InputGestures.Add(new KeyGesture(Key.C, ModifierKeys.Alt));
this.button1.Command = this.ClearCmd;
this.button1.CommandTarget = this.textboxA;
CommandBinding cb = new CommandBinding();
cb.Command = this.ClearCmd;
cb.CanExecute += new CanExecuteRoutedEventHandler(cb_CanExecute);
cb.Executed += new ExecutedRoutedEventHandler(cb_Executed);
this.stackpanel.CommandBindings.Add(cb);
}
private void cb_Executed(object sender, ExecutedRoutedEventArgs e)
{
this.textboxA.Clear();
}
private void cb_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = true;
}
}