Export (0) Print
Expand All

RoutedCommand Constructor (String, Type)

Initializes a new instance of the RoutedCommand class with the specified name and owner type.

Namespace:  System.Windows.Input
Assembly:  PresentationCore (in PresentationCore.dll)

'Declaration
Public Sub New ( _
	name As String, _
	ownerType As Type _
)

Parameters

name
Type: System.String

Declared name for serialization.

ownerType
Type: System.Type

The type which is registering the command.

ExceptionCondition
ArgumentNullException

name is Nothing.

ArgumentException

the length of name is zero.

ArgumentException

ownerType is Nothing.

This example shows how to create a custom RoutedCommand and how to implement the custom command by creating a ExecutedRoutedEventHandler and a CanExecuteRoutedEventHandler and attaching them to a CommandBinding. For more information on commanding, see the Commanding Overview.

The first step in creating a RoutedCommand is defining the command and instantiating it.

		Public Shared CustomRoutedCommand As New RoutedCommand()

In order to use the command in an application, event handlers which define what the command does must be created

		Private Sub ExecutedCustomCommand(ByVal sender As Object, ByVal e As ExecutedRoutedEventArgs)
			MessageBox.Show("Custom Command Executed")
		End Sub
		' CanExecuteRoutedEventHandler that only returns true if
		' the source is a control.
		Private Sub CanExecuteCustomCommand(ByVal sender As Object, ByVal e As CanExecuteRoutedEventArgs)
			Dim target As Control = TryCast(e.Source, Control)

			If target IsNot Nothing Then
				e.CanExecute = True
			Else
				e.CanExecute = False
			End If
		End Sub

Next, a CommandBinding is created which associates the command with the event handlers. The CommandBinding is created on a specific object. This object defines the scope of the CommandBinding in the element tree

<Window x:Class="SDKSamples.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:custom="clr-namespace:SDKSamples"
    Height="600" Width="800"
    >
  <Window.CommandBindings>
    <CommandBinding Command="{x:Static custom:Window1.CustomRoutedCommand}"
                    Executed="ExecutedCustomCommand"
                    CanExecute="CanExecuteCustomCommand" />
  </Window.CommandBindings>
			Dim customCommandBinding As New CommandBinding(CustomRoutedCommand, AddressOf ExecutedCustomCommand, AddressOf CanExecuteCustomCommand)

			' attach CommandBinding to root window
			Me.CommandBindings.Add(customCommandBinding)

The final step is invoking the command. One way to invoke a command is to associate it with a ICommandSource, such as a Button.

<StackPanel>
  <Button Command="{x:Static custom:Window1.CustomRoutedCommand}"
          Content="CustomRoutedCommand"/>
</StackPanel>
			' create the ui
			Dim CustomCommandStackPanel As New StackPanel()
			Dim CustomCommandButton As New Button()
			CustomCommandStackPanel.Children.Add(CustomCommandButton)

			CustomCommandButton.Command = CustomRoutedCommand

When the Button is clicked, the Execute method on the custom RoutedCommand is called. The RoutedCommand raises the PreviewExecuted and Executed routed events. These events traverse the element tree looking for a CommandBinding for this particular command. If a CommandBinding is found, the ExecutedRoutedEventHandler associated with CommandBinding is called.

.NET Framework

Supported in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Show:
© 2014 Microsoft