Mega Code Archive

 
Categories / VB.Net Tutorial / WPF
 

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/>         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