<Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="CommandHandlerProcedural" > </Window> //File:Window.xaml.cs using System; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using System.Windows.Media; namespace WpfApplication1 { public partial class Window1 : Window { public Window1() { InitializeComponent(); StackPanel MainStackPanel = new StackPanel(); this.AddChild(MainStackPanel); Button CommandButton = new Button(); CommandButton.Command = ApplicationCommands.Open; CommandButton.Content = "Open (KeyBindings: Ctrl-R, Ctrl-0)"; MainStackPanel.Children.Add(CommandButton); CommandBinding OpenCmdBinding = new CommandBinding(ApplicationCommands.Open,OpenCmdExecuted,OpenCmdCanExecute); this.CommandBindings.Add(OpenCmdBinding); KeyBinding OpenCmdKeyBinding = new KeyBinding(ApplicationCommands.Open,Key.R,ModifierKeys.Control); this.InputBindings.Add(OpenCmdKeyBinding); } void OpenCmdExecuted(object target, ExecutedRoutedEventArgs e) { MessageBox.Show("The command has been invoked."); } void OpenCmdCanExecute(object sender, CanExecuteRoutedEventArgs e) { e.CanExecute = true; } } }