Create a custom RoutedCommand, the CommandBinding objects, and the KeyBinding objects in code. : RoutedCommand « Windows Presentation Foundation « VB.Net Tutorial






<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
WPF Create A Custom Routed Command The Command Binding Objects And The Key Binding Objects In Code








16.92.RoutedCommand
16.92.1.Create a custom RoutedCommand, the CommandBinding objects, and the KeyBinding objects in code.Create a custom RoutedCommand, the CommandBinding objects, and the KeyBinding objects in code.
16.92.2.Convert RoutedEventArgs.OriginalSource to event senderConvert RoutedEventArgs.OriginalSource to event sender
16.92.3.RoutedEvents: Button Mouse Up EventRoutedEvents: Button Mouse Up Event
16.92.4.RoutedEvents: Drag And DropRoutedEvents: Drag And Drop
16.92.5.RoutedEvents: Focus eventRoutedEvents: Focus event
16.92.6.RoutedEvents: Key ModifiersRoutedEvents: Key Modifiers
16.92.7.RoutedEvents: Key Press EventsRoutedEvents: Key Press Events
16.92.8.RoutedEvents: Mouse PositionRoutedEvents: Mouse Position
16.92.9.Bubble routed events, and write an event handler for a routed event.Bubble routed events, and write an event handler for a routed event.
16.92.10.Get RoutedEvent NameGet RoutedEvent Name
16.92.11.Create RoutedCommand from InputGestureCollectionCreate RoutedCommand from InputGestureCollection
16.92.12.RoutedEvents Only NumbersRoutedEvents Only Numbers
16.92.13.Routed Event DemoRouted Event Demo