La interfaz Icommand
Cómo implementar un ICommand reutilizable
Si está utilizando el patrón MVVM (modelo-vista-modelo), uno de los mecanismos más utilizados para vincular acciones a la vista son los comandos. Para proporcionar un comando, debe implementar la interfaz. Esto es bastante simple, pero tienes que hacerlo una y otra vez. Esto es engorroso
La idea de este patrón es crear un comando universal, que requiere dos delegados: uno que se llama, cuando se invoca [ICommand.CanExecute(object param)] y otro que evalúa el estado del comando cuando se llama. [ICommand.Execute(object param) ]
Además de esto, necesitamos un método que desencadene el evento [commmand.CanExecuteChanged]n lo que obliga a la interfaz de usuario vuelva a evaluar el metodo CanExecute()
Implementatión simple
' public class DelegateCommand : ICommand { private readonly Predicate<object> _canExecute; private readonly Action<object> _execute; public event EventHandler CanExecuteChanged; public DelegateCommand(Action<object> execute) : this(execute, null) { } public DelegateCommand(Action<object> execute, Predicate<object> canExecute) { _execute = execute; _canExecute = canExecute; } public override bool CanExecute(object parameter) { if (_canExecute == null) { return true; } return _canExecute(parameter); } public override void Execute(object parameter) { _execute(parameter); } public void RaiseCanExecuteChanged() { if( CanExecuteChanged != null ) { CanExecuteChanged(this, EventArgs.Empty); } } } '
Mi clase Personalizada DelegateCommand
Enlace de descarga
- Enlace de descarga del Código VB.Net de un DelegateCommand
- Código Md5 para los paranoicos