Button CommandTarget Binding : Command « 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 Button Command Target Binding








16.89.Command
16.89.1.Invoking Copy command with a ButtonInvoking Copy command with a Button
16.89.2.Button CommandTarget BindingButton CommandTarget Binding
16.89.3.Creating CommandBinding and attaching an Executed and CanExecute handlerCreating CommandBinding and attaching an Executed and CanExecute handler
16.89.4.Command Handler Command Binding in XamlCommand Handler Command Binding in Xaml
16.89.5.Property changed callbackProperty changed callback
16.89.6.Using CommandBinding and ExecutedRoutedEventHandler to bind Application event to an event handler methodUsing CommandBinding and ExecutedRoutedEventHandler to bind Application event to an event handler method
16.89.7.Create CommandBindings in Xaml and bind to ButtonCreate CommandBindings in Xaml and bind to Button
16.89.8.Bind TextBox save command to CommandBindingBind TextBox save command to CommandBinding
16.89.9.Press F1 to get helpPress F1 to get help
16.89.10.Help commandHelp command
16.89.11.Command EnablingCommand Enabling