Si estás desarrollando aplicaciones en WPF, te conviene conocer los comandos. Estos te permiten separar las acciones de los elementos que las activan, lo que mejora la estructura de tu código y lo hace fácil de modificar, mantener y reutilizar. Además, te ayuda a crear una experiencia de usuario consistente y accesible mediante la implementación de atajos de teclado y gestos. En este artículo, te enseñaremos cómo definir y utilizar comandos en XAML y algunos ejemplos útiles de comandos que puede utilizar.
¿Qué son los comandos en WPF?
En WPF, un comando es un objeto que representa una acción ejecutable. Los comandos se usan en su mayoría en la capa de presentación, ya que su función es interactuar con elementos de la interfaz de usuario, como botones, menús, barras de herramientas o teclas. Sin embargo, los comandos no corresponden directamente a ninguna de estas acciones; se usan para desacoplar la lógica de la interfaz de usuario de la clase que la maneja. De esta manera, se aumenta la cohesión y se reduce la complejidad de nuestro código.
¿Cómo se definen los comandos?
En WPF, puede definir comandos enviando un objeto CommandBinding a un elemento UI, que captura los eventos del comando y coloca un objeto CommandBinding en el objeto CommandBindingCollection asociado con el elemento. Un CommandBinding es un objeto que especifica la relación entre un comando y los métodos que se llamarán para invocar la lógica del comando. Para definir un comando personalizado, implemente la interfaz ICommand y declare un objeto RelayCommand.
¿Cómo se utilizan los comandos en XAML?
El lenguaje de marcado XAML de WPF admite la definición de comandos mediante la sintaxis de la etiqueta CommandBinding. Puede establecer el evento Command, que se activa cuando se llama a un comando, y el evento CanExecuteChanged, que se produce cuando el estado de un comando ha cambiado. Sin embargo, también puede utilizar el enlace de datos para vincular comandos a elementos de IU.
Comandos útiles para mejorar tu desarrollo en WPF
A continuación, te mostramos algunos comandos que pueden facilitar su desarrollo en WPF:
Comando ApplicationCommands.Copy
Este comando copia la selección actual de contenido en el portapapeles. Es el mismo comando que se usa al pulsar Ctrl + C en una aplicación de Windows.
Comando ApplicationCommands.Cut
Este comando corta la selección actual de contenido y la coloca en el portapapeles. Es el mismo comando que se usa al pulsar Ctrl + X en una aplicación de Windows.
Comando ComponentCommands.ScrollPageDown
Este comando desplaza una ventana contenedora en una página hacia abajo. Es el mismo comando que se usa al pulsar Ctrl + Av Pág en una aplicación de Windows.
Comando CustomCommands.Print
Este comando imprime el contenido actual en una impresora especificada. Es un comando personalizado que debe definir usted mismo.
Conclusión
Si aún no estás utilizando comandos en tu desarrollo de WPF, te estás perdiendo de una gran herramienta para mejorar la calidad y la sostenibilidad de tu código. Los comandos te ayudan a separar las responsabilidades de tu código, lo hacen más fácil de mantener y reutilizar y proporcionan una experiencia de usuario coherente y accesible. Además, puedes utilizar algunos de los comandos útiles que hemos descrito para mejorar tus aplicaciones.
Preguntas frecuentes
¿Cuál es la diferencia entre los comandos estándar y los comandos personalizados?
Los comandos estándar son comandos predefinidos en WPF que son compartidos por muchas aplicaciones. Se utilizan con más frecuencia en la capa de presentación de la aplicación. Los comandos personalizados son comandos específicos de una aplicación que implementa una funcionalidad única y que no se encuentra en los comandos estándar. Se definen en una clase ICommand personalizada.
¿Cómo puedo crear mi propio comando personalizado?
Puede crear su propio comando personalizado implementando la interfaz ICommand y creando un comando personalizado. También debe definir la lógica de la clase de comando. La instancia de comando se registra con el objeto CommandManager en la carga de la aplicación.
¿Los comandos personalizados también pueden tener gestos asociados?
Sí. Para agregar un gesto a un comando personalizado, establezca la propiedad InputGestureText. Esta propiedad asigna un texto que se muestra junto al nombre del comando en el menú. Cuando el usuario presiona la combinación de teclas asignada, se activa el comando.
¿Cómo puedo deshabilitar un comando en ciertos casos?
Para deshabilitar un comando, puede establecer su propiedad CanExecute en falso. Para volver a habilitarlo, simplemente establezca la propiedad en verdadero. El evento CanExecuteChanged se activa cada vez que se produce un cambio en la propiedad CanExecute. Esto significa que la habilitación o deshabilitación del comando ocurre en tiempo de ejecución.