RoutedCommand.CanExecuteChanged Evento
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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.