example commandmanager c# windows-8 windows-runtime icommand

c# - example - ¿Qué reemplaza a CommandManager en WinRT?



command mvvm c# (2)

Estoy comenzando con las aplicaciones de estilo Metro (sé que se supone que no debemos llamarlo Metro, pero nunca puedo recordar cómo se supone que se llama ...), y estoy implementando una clase DelegateCommand para su uso en MVVM . En WPF, el evento ICommand.CanExecuteChanged generalmente se implementa de esta manera:

public event EventHandler CanExecuteChanged { add { CommandManager.RequerySuggested += value; } remove { CommandManager.RequerySuggested -= value; } }

Pero la clase CommandManager no existe en WinRT ... ¿Hay algo más en su lugar? ¿O se supone que debemos activar este evento nosotros mismos?



En WinRT, debe actualizar / subir CanExecuteChanged manualmente. No hay CommandManager para hacer esto globalmente. Podría ver esto como un dolor en el cuello, o un aumento de rendimiento serio ahora que CanExecute no se llama constantemente. Significa que debe pensar en cambios de propiedad en cascada donde antes no tenía que hacerlo. Pero así es como es. Manual.

public void RaiseCanExecuteChanged() { if (CanExecuteChanged != null) CanExecuteChanged(this, EventArgs.Empty); }