c# - CanExecuteChanged evento de ICommand
command wpf mvvm (2)
Icommand
contiene dos métodos y un evento.
Lo que hacen los dos métodos está claro, pero no puedo entender qué hace el evento que se proporciona en ICommand
.
¿Cuándo se CanExecuteChanged
evento CanExecuteChanged
?
La siguiente explicación está en MSDN pero no puedo entenderla.
CanExecuteChanged se genera si el administrador de comandos que centraliza las operaciones de comando detecta un cambio en el origen del comando que podría invalidar un comando que se ha generado pero que aún no se ha ejecutado mediante el enlace del comando.
¿Puede por favor explicar esto en términos simples?
Gracias......
Este evento es generado por el comando para notificar a sus consumidores (es decir, Button, MenuItem) que la propiedad CanExecute puede haber cambiado. Por lo tanto, si el foco se mueve de un TextBox a otro, es posible que su comando deba habilitarse / deshabilitarse. Esta información también debe pasarse a cualquier control usando su comando.
En general, este evento simplemente CommandManager.RequerySuggested evento CommandManager.RequerySuggested . De la clase RoutedCommand:
public event EventHandler CanExecuteChanged {
add {
CommandManager.RequerySuggested += value;
}
remove {
CommandManager.RequerySuggested -= value;
}
}
El evento RequerySuggested se dispara con bastante frecuencia, a medida que se mueve el foco, se cambia la selección de texto. Esto también puede plantearse manualmente llamando a InvalidateRequerySuggested .
CanExecuteChanged
se CanExecuteChanged
cuando se CanExecute
método CanExecute
de un ICommand
En algunas bibliotecas de terceros, el evento CanExecuteChanged
también se CanExecute
si los parámetros CanExecute
un evento PropertyChanged
. Por ejemplo, RelayCommand de MVVM Light Toolkit genera el evento CanExecuteChanged
si los parámetros de CanExecute
un evento PropertyChanged
, mientras que el DelegateCommand
de Prism no.