¿Cómo puedo usar el RelayCommand
en wpf?¿Cómo puedo usar RelayCommand en wpf?
Respuesta
El comando de relevo no existe en WPF, es solo una clase externa que se destacó después de que se definió en this MSDN article. Debe escribirlo usted mismo si quiere usarlo.
De lo contrario, puede obtener el comando Delegar del kit de herramientas WPF here que tiene un poco de funcionalidad adicional sobre el código RelayCommand.
Ah, la pregunta cambió mientras escribía esta respuesta. Suponiendo que está utilizando el RelayCommand como se define más arriba, debe proporcionar uno o dos delegados, uno que devuelva un bool que determine si el comando está en un estado válido para ejecutarse, y un segundo que no devuelve nada y realmente ejecuta el mando. Si no proporciona un delegado "CanRun", el comando considerará que siempre está en un estado válido. El código utilizado en el artículo:
RelayCommand _saveCommand;
public ICommand SaveCommand
{
get
{
if (_saveCommand == null)
{
_saveCommand = new RelayCommand(param => this.Save(),
param => this.CanSave);
}
return _saveCommand;
}
}
Declara una RelayCommand que llamará al método Save() cuando se dispara y devolver la propiedad CanSave como una prueba para la validez. Cuando este comando está vinculado a un botón en WPF, la propiedad IsEnabled del Botón coincidirá con la propiedad CanSave del ViewModel y cuando se hace clic en el botón (suponiendo que esté habilitado) se llamará al método Save() en el ViewModel.
Como alternativa a la creación de envoltorios RelayCommand
para todos sus métodos, puedo sugerir una biblioteca y una fuente gratuitas que le permitirán utilizar el enlace {BindTo Save()}
. Lo creé para simplificar mis enlaces. También hace que la vinculación relativa sea mucho más fácil. Puede encontrarlo aquí: http://www.simplygoodcode.com/2012/08/simpler-wpf-binding.html
Se ve muy bien, aunque no lo ha probado. Pero le sugiero que mejore la publicación del blog y explique los detalles de la implementación. Aunque publicar el código en Github sería muy agradable. Y también considere poner más (¡algunos!) Códigos en esta respuesta en StackOverflow. –
+1 para la sugerencia de @ MD.Unicorn para publicar el código en GitHub (o similar). También podría ser bueno si la biblioteca estuviera disponible como paquete NuGet. –
- 1. Simplificar el comando RelayCommand/Delegate en WPF MVVM ViewModels
- 2. RelayCommand en C#
- 3. Teclear un RelayCommand
- 4. ¿Por qué RelayCommand o DelegateCommand no forman parte de WPF?
- 5. ¿Cómo se usa CommandParameter con un RelayCommand?
- 6. RelayCommand llamado en "viejo" DataContext
- 7. Cómo usar DrawThemeTextEx en WPF
- 8. ¿Cómo usar XNA en WPF?
- 9. Usar MonoGame en WPF
- 10. Cómo utilizar RelayCommand con el marco de MVVM Light
- 11. Cómo usar controles personalizados en WPF
- 12. Cómo usar MultiBinding en un WPF ComboBox
- 13. Pasar eventos args y remitente a RelayCommand
- 14. ¿Cómo usar el dibujo GDI + en WPF?
- 15. Cómo usar un ContextMenu UserControl en WPF?
- 16. CanExecute en RelayCommand <T> no trabajar
- 17. Cómo puedo obtener Fuentes disponibles en WPF
- 18. ¿Cómo puedo obtener el DPI en WPF?
- 19. Cómo puedo solicitar grupos en WPF
- 20. ¿La implementación de Josh Smith del RelayCommand está defectuosa?
- 21. ¿Cómo comenzar a usar WCF/WPF?
- 22. Cómo usar el control del navegador WebKit en WPF
- 23. ¿Cómo sabe una vista qué ViewModel usar en WPF?
- 24. ¿Cómo usar un archivo App.config en aplicaciones WPF?
- 25. En WPF XAML, ¿cómo puedo concatenar 2 constantes para que pueda usar rutas predefinidas?
- 26. ¿Cómo puedo usar UIScrollView?
- 27. ¿Cómo puedo usar Html.Action?
- 28. ¿Cómo implementar comandos para usar métodos ancestrales en WPF?
- 29. ¿Cómo puedo evitar el desorden de comandos en ViewModel?
- 30. Cómo puedo asignar el Caret a un control en WPF
Tenía una ventaja porque ayer lo busqué para esta respuesta: http://stackoverflow.com/questions/858268/in-mvvm-what-is-the-best-way- For-the-viewmodel-to-respond-to-user-actions-in-the/858303 # 858303 –
Desearía que las muestras de los códigos de los artículos de MSDN no estuvieran mezcladas, ya hace meses que nadie conoce un espejo o algo que los muestra normales? –
Existe un comando de retransmisión incorrecto/desactualizado, pero es una parte del https://mvvmlight.codeplex.com/ toolkit – MikeT