Compartir por


RoutedCommand.CanExecuteChanged Evento

Definición

Se produce cuando el administrador de comandos detecta los cambios en el origen del comando. Estos cambios a menudo afectan a si el comando debe ejecutarse en el destino del comando actual.

public:
 virtual event EventHandler ^ CanExecuteChanged;
public event EventHandler CanExecuteChanged;
member this.CanExecuteChanged : EventHandler 
Public Custom Event CanExecuteChanged As EventHandler 

Tipo de evento

Implementaciones

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 está deshabilitado.

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

RoutedCommand escucha el RequerySuggested evento , que genera .CommandManager El RequerySuggested evento se genera siempre que se cumplan las condiciones que pueden cambiar si se debe ejecutar el comando, como un cambio en el foco del teclado. Cuando el comando recibe el RequerySuggested evento, genera el CanExecuteChanged evento . Por lo general, el origen del comando escuchará este evento y consultará mediante RoutedCommand el CanExecute método . La mayoría de los orígenes de comandos se deshabilitarán si el comando no se puede ejecutar, como parte de su enlace de comandos. Un ejemplo de esto es cuando no se puede ejecutar un MenuItem gris cuando no se puede ejecutar el comando.

En algunas situaciones, no CommandManager es consciente de un cambio en las condiciones que modifica la capacidad de ejecutar un comando. En estos casos, puede forzar a que CommandManager genere el RequerySuggested evento llamando al InvalidateRequerySuggested método , lo que provocará el RoutedCommandCanExecuteChanged evento.

Se aplica a