CanExecuteRoutedEventArgs Class


Provides data for the CanExecute and PreviewCanExecute routed events.

public ref class CanExecuteRoutedEventArgs sealed : System::Windows::RoutedEventArgs
public sealed class CanExecuteRoutedEventArgs : System.Windows.RoutedEventArgs
type CanExecuteRoutedEventArgs = class
    inherit RoutedEventArgs
Public NotInheritable Class CanExecuteRoutedEventArgs
Inherits RoutedEventArgs


The follow example creates a CanExecuteRoutedEventHandler that returns true only if the command target is a control. First, Source is cast to a Control. If Source is a Control, CanExecute is set to true; otherwise, it is set to false.

// CanExecuteRoutedEventHandler that only returns true if
// the source is a control.
private void CanExecuteCustomCommand(object sender, 
    CanExecuteRoutedEventArgs e)
    Control target = e.Source as Control;
    if(target != null)
        e.CanExecute = true;
        e.CanExecute = false;
' 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
        e.CanExecute = False
    End If
End Sub


Typically, a command source, such a MenuItem, will call the CanExecute method on a RoutedCommand to determine if the command can or cannot execute on the current command target. If CanExecute is set to false from an event handler, the command source will disable itself. For example, if a MenuItem is acting as the command source for a command and the command cannot execute on the current command target, then the MenuItem will gray itself out.

The CanExecuteChanged event notifies a command source when the ability of a command to execute may have changed.



Gets or sets a value that indicates whether the RoutedCommand associated with this event can be executed on the command target.


Gets the command associated with this event.


Determines whether the input routed event that invoked the command should continue to route through the element tree.


Gets or sets a value that indicates the present state of the event handling for a routed event as it travels the route.

(Inherited from RoutedEventArgs)

Gets the original reporting source as determined by pure hit testing, before any possible Source adjustment by a parent class.

(Inherited from RoutedEventArgs)

Gets the command specific data.


Gets or sets the RoutedEvent associated with this RoutedEventArgs instance.

(Inherited from RoutedEventArgs)

Gets or sets a reference to the object that raised the event.

(Inherited from RoutedEventArgs)



Determines whether the specified object is equal to the current object.

(Inherited from Object)

Serves as the default hash function.

(Inherited from Object)

Gets the Type of the current instance.

(Inherited from Object)
InvokeEventHandler(Delegate, Object)

When overridden in a derived class, provides a way to invoke event handlers in a type-specific way, which can increase efficiency over the base implementation.

(Inherited from RoutedEventArgs)

Creates a shallow copy of the current Object.

(Inherited from Object)

When overridden in a derived class, provides a notification callback entry point whenever the value of the Source property of an instance changes.

(Inherited from RoutedEventArgs)

Returns a string that represents the current object.

(Inherited from Object)

Applies to

See also