Create a custom RoutedCommand, the CommandBinding objects, and the KeyBinding objects in code.
<Window x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:custom="clr-namespace:WpfApplication1" Title="Custom RoutedCommand Sample" Name="RootWindow" Height="500" Width="600" Focusable="True"> <Window.CommandBindings> <CommandBinding Command="{x:Static custom:Window1.ColorCmd}" Executed="ColorCmdExecuted" CanExecute="ColorCmdCanExecute"/> </Window.CommandBindings> <DockPanel> <Menu DockPanel.Dock="Top" Height="25"> <MenuItem Header="Commands"> <MenuItem Header="Color Command" Command="{x:Static custom:Window1.ColorCmd}" /> </MenuItem> </Menu> <Border BorderBrush="Black" BorderThickness="1" Margin="10" Height="165" Width="250" DockPanel.Dock="Top"> <TextBlock TextWrapping="Wrap" Margin="3"> a <LineBreak/> b <LineBreak/> <LineBreak/> c <LineBreak/> </TextBlock> </Border> <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" DockPanel.Dock="Bottom"> <Border BorderBrush="Black" BorderThickness="1" Height="200" Width="200"> <StackPanel Name="FirstStackPanel" Background="AliceBlue" Focusable="True"> <StackPanel.CommandBindings> <CommandBinding Command="{x:Static custom:Window1.ColorCmd}" Executed="ColorCmdExecuted" CanExecute="ColorCmdCanExecute"/> </StackPanel.CommandBindings> <Label>StackPanel</Label> <Button Command="{x:Static custom:Window1.ColorCmd}" CommandParameter="ButtonOne" CommandTarget="{Binding ElementName=FirstStackPanel}" Content="CommandTarget = FristStackPanel" /> </StackPanel> </Border> <Border BorderBrush="Black" BorderThickness="1" Height="200" Width="200"> <StackPanel Background="AliceBlue" Focusable="True"> <Label>Second StackPanel</Label> </StackPanel> </Border> </StackPanel> </DockPanel> </Window> //File:Window.xaml.vb Imports System Imports System.Windows Imports System.Windows.Controls Imports System.Windows.Media Imports System.Windows.Input Namespace WpfApplication1 Public Partial Class Window1 Inherits Window Public Shared ColorCmd As New RoutedCommand() Public Sub New() InitializeComponent() End Sub Private Sub ColorCmdExecuted(sender As Object, e As ExecutedRoutedEventArgs) Dim target As Panel = TryCast(e.Source, Panel) If target IsNot Nothing Then If target.Background Is Brushes.AliceBlue Then target.Background = Brushes.Red Else target.Background = Brushes.AliceBlue End If End If End Sub Private Sub ColorCmdCanExecute(sender As Object, e As CanExecuteRoutedEventArgs) If TypeOf e.Source Is Panel Then e.CanExecute = True Else e.CanExecute = False End If End Sub End Class End Namespace