Compartir a través de


Arquitectura de herramientas

Actualización: noviembre 2007

Los usuarios interactúan con el contenido en un diseñador en una gran variedad de maneras complejas. Por ejemplo, los usuarios pueden interactuar con la superficie de diseño haciendo diferentes clics, arrastres, arrastres con teclas modificadoras, con el teclado o con el menú. Para que sea extensible, un diseñador debe proporcionar una base para controlar todos estos tipos de interacción con el usuario. Windows Presentation Foundation (WPF) Designer for Visual Studio proporciona un sistema de entrada flexible y estructurado que es extensible y coherente. El modelo de usuario para la arquitectura de herramientas está compuesto de comandos, tareas y herramientas.

Comandos

Un comando es un identificador único que representa un determinado comportamiento. Un ejemplo es el comando Cortar, que identifica el proceso de cortar texto o un objeto, y agregarlo al Portapapeles. Mientras el código que implementa el comando puede ser diferente de aplicación en aplicación, o incluso dentro de una aplicación, el comando siempre es constante. Todos los comandos implementan la interfaz ICommand.

Además del propio comando, hay otras dos cosas necesarias para hacer funcionar un comando. En primer lugar, un comando requiere que el usuario realice un movimiento para desencadenarlo. Por ejemplo, la combinación de teclas CTRL+X o la selección de un menú se puede considerar un movimiento que activa un comando. En segundo lugar, un comando requiere la implementación de un código determinado que se ejecuta cuando se invoca el comando.

WPF proporciona una implementación integrada de la interfaz ICommand denominada RoutedCommand, que pasa información sobre los datos proporcionados por el usuario a los controladores de comando designados. WPF Designer proporciona otro tipo de comando denominado ToolCommand, que expande la cantidad de información sobre el estado del diseñador que se pasa al tipo EventArgs del controlador del comando.

Tareas

Un objeto Task es un objeto que representa una tarea real que se puede realizar en el diseñador. Por ejemplo, arrastrar un elemento en el diseñador puede representarse mediante un objetoTask. Un objeto Task contiene tres colecciones:

  1. Una colección de enlaces de entrada que describen los tipos de datos proporcionados por el usuario que administra la tarea. Por ejemplo, enlaces que representan combinaciones de teclas o movimientos del mouse.

  2. Una colección de enlaces de comandos que proporcionan las implementaciones para los comandos enrutados de WPF estándar.

  3. Una colección de enlaces de comandos de herramientas que proporcionan la implementación de los comandos de herramientas de WPF Designer.

Por ejemplo, el objeto Task previamente mencionado, que representa arrastrar un elemento en el diseñador puede contener los comandos mouse hacia abajo, movimiento del mouse y mouse hacia arriba. El objeto Task también puede contener los enlaces de entrada que enlazan los movimientos de entrada de datos de cada uno de esos comandos.

Herramientas

Un objeto Tool es una clase que se utiliza para procesar los datos proporcionados por el usuario. Todos los datos proporcionados por el usuario entran en el diseñador como uno o más eventos de entrada, e incluyen datos que representan el movimiento de entrada usado y otra información sobre el estado del diseñador. El evento de entrada se enruta al objeto Tool actualmente activo, que convierte los datos de entrada en enlaces de entrada. Si se encuentra un enlace para el movimiento de entrada indicado, se ejecuta el comando que hay dentro del enlace.

El objeto Tool se utiliza para representar el modo global del diseñador. Por ejemplo, si el usuario está seleccionando componentes en la superficie de diseño, ese modo se habilita porque la herramienta actual ofrece tareas que proporcionan las colecciones de enlaces de entrada y los comandos que enlazan determinados movimientos de entrada con determinados comandos que habilitan dichas tareas. Si el usuario estuviera creando un nuevo control, la herramienta activa sería diferente y proporcionaría un conjunto diferente de enlaces que permitirían al usuario usar los mismos movimientos, pero los enlazaría a comandos diferentes.

Vea también

Conceptos

Introducción de datos por el usuario y arquitectura de presentación

Arquitectura de extensibilidad de WPF Designer

Referencia

Tool

Task

ToolCommand

ICommand