c# .net wpf icommand

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.