Compartir a través de


RoutedCommand.CanExecute(Object, IInputElement) Método

Definición

Determina si este RoutedCommand puede ejecutarse en su estado actual.

public:
 bool CanExecute(System::Object ^ parameter, System::Windows::IInputElement ^ target);
[System.Security.SecurityCritical]
public bool CanExecute (object parameter, System.Windows.IInputElement target);
public bool CanExecute (object parameter, System.Windows.IInputElement target);
[<System.Security.SecurityCritical>]
member this.CanExecute : obj * System.Windows.IInputElement -> bool
member this.CanExecute : obj * System.Windows.IInputElement -> bool
Public Function CanExecute (parameter As Object, target As IInputElement) As Boolean

Parámetros

parameter
Object

Tipo de datos definido por el usuario.

target
IInputElement

Destino del comando.

Devoluciones

Es true si el comando puede ejecutarse en el destino de comando actual; de lo contrario, es false.

Atributos

Excepciones

Ejemplos

El ejemplo siguiente es un CanExecuteChanged controlador de eventos de una implementación personalizada de ICommandSource.

this.Commanden este ejemplo es la Command propiedad de .ICommandSource Si el comando no nulles , el comando se convierte en .RoutedCommand Si el comando es , RoutedCommandse llama al CanExecute método pasando y CommandTarget .CommandParameter Si el comando no es , RoutedCommandse convierte en y ICommand se llama al CanExecute método pasando .CommandParameter

Si el CanExecute método devuelve true, el control está habilitado; de lo contrario, el control se deshabilita.

private void CanExecuteChanged(object sender, EventArgs e)
{

    if (this.Command != null)
    {
        RoutedCommand command = this.Command as RoutedCommand;

        // If a RoutedCommand.
        if (command != null)
        {
            if (command.CanExecute(CommandParameter, CommandTarget))
            {
                this.IsEnabled = true;
            }
            else
            {
                this.IsEnabled = false;
            }
        }
        // If a not RoutedCommand.
        else
        {
            if (Command.CanExecute(CommandParameter))
            {
                this.IsEnabled = true;
            }
            else
            {
                this.IsEnabled = false;
            }
        }
    }
}
Private Sub CanExecuteChanged(ByVal sender As Object, ByVal e As EventArgs)

    If Me.Command IsNot Nothing Then
        Dim command As RoutedCommand = TryCast(Me.Command, RoutedCommand)

        ' If a RoutedCommand.
        If command IsNot Nothing Then
            If command.CanExecute(CommandParameter, CommandTarget) Then
                Me.IsEnabled = True
            Else
                Me.IsEnabled = False
            End If
            ' If a not RoutedCommand.
        Else
            If Me.Command.CanExecute(CommandParameter) Then
                Me.IsEnabled = True
            Else
                Me.IsEnabled = False
            End If
        End If
    End If
End Sub

Comentarios

La lógica real que determina si un RoutedCommand objeto se puede ejecutar en el destino de comando actual no está contenido en los CanExecute métodos, sino CanExecute que genera los PreviewCanExecute eventos y CanExecute que tuneliza y propagan a través del árbol de elementos que buscan un objeto con .CommandBinding Si se encuentra un CommandBinding para , RoutedCommandCanExecuteRoutedEventHandler se llama al adjunto a CommandBinding . Estos controladores proporcionan la lógica de programación para determinar si se RoutedCommand puede ejecutar o no.

Los PreviewCanExecute eventos y PreviewExecuted se generan en .CommandTarget CommandTarget Si no se establece en ICommandSource, los PreviewCanExecute eventos y CanExecute se generan en el elemento con foco de teclado.

Se aplica a