Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Visual Studio Modeling and Visualization SDK (VMSDK) proporciona varios niveles en los que puede definir herramientas de modelado:
Defina un lenguaje específico del dominio (DSL) mediante el diagrama de definición de DSL. Puede crear rápidamente un DSL con una notación diagramática, un formato XML fácil de leer y las herramientas básicas necesarias para generar código y otros artefactos. Para obtener más información, vea How to Define a Domain-Specific Language.
Ajuste el DSL mediante el uso de características más avanzadas de la definición del DSL. Por ejemplo, puede hacer que aparezcan vínculos adicionales cuando el usuario crea un elemento. Estas técnicas se logran principalmente en la definición de DSL y algunas requieren algunas líneas de código de programa.
Amplíe las herramientas de modelado mediante código de programa. VMSDK está diseñado específicamente para facilitar la integración de las extensiones con el código que se genera a partir de la definición de DSL. Para obtener más información, vea Escribir código para personalizar un lenguaje Domain-Specific.
Nota:
Cuando haya actualizado el archivo Definiciones de DSL, no olvide hacer clic en Transformar todas las plantillas en la barra de herramientas del Explorador de soluciones antes de volver a generar la solución.
Referencia de artículo
| Para lograr este efecto | Consulte este tema. |
|---|---|
| Permitir al usuario establecer las propiedades de color y estilo de una forma. | Haga clic con el botón derecho en la clase de conector o forma, seleccione Agregar Exposición y seleccione un elemento. |
| Las distintas clases del elemento de modelo tienen un aspecto similar en el diagrama, y comparten propiedades como el alto inicial y el ancho, el color, la información sobre herramientas. | Use la herencia entre formas o clases de conector. Las asignaciones entre formas derivadas y clases de dominio derivadas heredan los detalles de asignación de los elementos primarios. O bien, asigne clases de dominio diferentes a la misma clase de forma. |
| Una clase de elemento de modelo se muestra mediante diferentes formas contextuales. | Asigne más de una clase de forma a la misma clase de dominio. Al compilar la solución, siga el informe de errores y proporcione el código solicitado para decidir qué forma usar. |
| El color de la forma u otras características, como la fuente, indican el estado actual. | Consulte Actualización de formas y conectores para reflejar el modelo. Cree una regla que actualice las propiedades expuestas. Consulte Reglas propagación de cambios en el modelo. O bien, use OnAssociatedPropertyChanged() para actualizar características no expuestas, como flechas de vínculo o fuente. |
| Icono en la forma cambia para indicar el estado. | Configure la visibilidad de la asignación del decorador en la ventana Detalles de DSL. Busque varios decoradores de imágenes en la misma posición. Consulte Actualización de formas y conectores para reflejar el modelo. O bien, invalide ImageField.GetDisplayImage(). Vea el ejemplo de ImageField. |
| Establecer una imagen de fondo en cualquier forma | Sobrescriba InitializeInstanceResources() para agregar un ImageField anclado. |
| Encajar formas hasta cualquier profundidad | Configure un árbol de inserción recursivo. Defina BoundsRules para que contenga las formas. |
| Conecte conectores en puntos fijos en el límite de un elemento. | Defina los elementos de terminal incrustados, representados por puertos pequeños en el diagrama. Use BoundsRules para asegurar los puertos en su lugar. Consulte el ejemplo de diagrama de circuito en El SDK de visualización y modelado. |
| El campo de texto muestra un valor derivado de otros valores. | Asigne el decorador de texto a una propiedad de dominio de almacenamiento calculado o personalizado. Para obtener más información, consulte Propiedades de almacenamiento calculadas y personalizadas. |
| Propagación de cambios entre elementos del modelo o entre formas | Consulte Validación en un lenguaje Domain-Specific. |
| Propague cambios a recursos como otras extensiones de Visual Studio fuera del almacén. | Consulte el documento titulado Los manejadores de eventos propagan los cambios fuera del modelo. |
| La ventana de propiedades muestra las propiedades de un elemento relacionado. | Configurar el reenvío de atributos. Consulte Personalización de la ventana Propiedades. |
| Categorías de propiedades | La ventana de propiedades se divide en secciones denominadas categorías. Establezca la categoría de las propiedades del dominio. Las propiedades con el mismo nombre de categoría aparecerán en la misma sección. También puede establecer la categoría del rol en una relación. |
| Control del acceso de usuario a las propiedades del dominio | Establezca es visible en falso para evitar que una propiedad de dominio aparezca en la ventana de propiedades durante la ejecución. Todavía puede seguir vinculándolo a los decoradores de texto. Is UI Read Only impide que los usuarios cambien una propiedad de dominio. El acceso del programa a la propiedad de dominio no se ve afectado. |
| Cambie el nombre, el icono y la visibilidad de los nodos en el explorador de modelos de DSL. | Consulte Personalización del Explorador de modelos. |
| Habilitar copia, cortar y pegar | Establezca la propiedad Enable Copy Paste del nodo Editor en el Explorador dsl. |
| Copie los vínculos de referencia y sus destinos cada vez que se copie un elemento. Por ejemplo, copie comentarios adjuntos a un elemento. | Establezca la propiedad Propagates Copy del rol de origen (representado por la línea en un extremo de la relación de dominio en el diagrama de definición de DSL). Escriba código para invalidar ProcessOnCopy para lograr efectos más complejos. Consulte Personalización del comportamiento de copia. |
| Elimine, reparente o vuelva a vincular los elementos relacionados cuando se elimina un elemento. | Establezca el valor Propagates Delete de un rol de relación. Para efectos más complejos, sobrescribe los métodos ShouldVisitRelationship y ShouldVisitRolePlayer de la clase MyDslDeleteClosure, definidos en DomainModel.cs. |
| Conservar el diseño y la apariencia de la forma al copiar y al arrastrar y soltar. | Agregue las formas y los conectores a la copia de ElementGroupPrototype. El método más conveniente para invalidar es ElementOperations.CreateElementGroupPrototype()Consulte Personalización del comportamiento de copia. |
| Pegue formas en una ubicación elegida, como la posición actual del cursor. | Sobrescriba ClipboardCommandSet.ProcessOnCopy() para usar la versión local de ElementOperations.Merge().. Consulte Personalización del comportamiento de copia. |
| Crear vínculos adicionales al pegar | Sobrescribir ClipboardCommandSet.ProcessOnPasteCommand() |
| Habilitar arrastrar y soltar desde este diagrama, otros DSLs y elementos de Windows | Consulte How to: Add a Drag-and-Drop Handler (Cómo: Agregar un controlador de arrastrar y colocar). |
| Permita que una forma o herramienta se arrastre a una forma hijo, como un puerto, como si se arrastrara al elemento padre. | Defina una directiva de combinación de elementos en la clase de objeto de destino para reenviar el objeto quitado al elemento primario. Consulte Personalización de la creación y movimiento de elementos. |
| Permitir que una forma o herramienta se arrastre a una forma y tenga vínculos u objetos adicionales creados. Por ejemplo, para permitir que se coloque un comentario en un elemento al que se debe vincular. | Defina una directiva de combinación de elementos en la clase de dominio de destino y defina los vínculos que se van a generar. En casos complejos, puede agregar código personalizado. Consulte Personalización de la creación y movimiento de elementos. |
| Cree un grupo de elementos con una herramienta. Por ejemplo, un componente con un conjunto fijo de puertos. | Invalide el método de inicialización del cuadro de herramientas en ToolboxHelper.cs. Cree un prototipo de grupo de elementos (EGP) que contenga los elementos y sus vínculos de relación. Consulte Personalización de herramientas y el cuadro de herramientas. Incluya las formas de principal y puerto en el EGP o defina BoundsRules para posicionar las formas de puerto cuando el EGP es instanciado. |
| Use una herramienta de conexión para crear instancias de varios tipos de relación. | Agregue directivas de conexión de vínculo (LCD) al Generador de conexiones invocado por la herramienta. Los LCDs determinan el tipo de relación basándose en los tipos de los dos elementos. Para que esto dependa de los estados de los elementos, puede agregar código personalizado. Consulte Personalización de herramientas y el cuadro de herramientas. |
| Herramientas permanentes: el usuario puede hacer doble clic en cualquier herramienta para crear muchas formas o conectores en sucesión. | En el Explorador de DSL, seleccione el Editor nodo. En la ventana Propiedades, establezca Usa elementos fijos del cuadro de herramientas. |
| Definir comandos de menú | Vea How to: Modify a Standard Menu Command (Cómo: Modificar un comando de menú estándar) |
| Restricción del modelo con reglas de validación | Consulte Validación en un lenguaje específico de dominio |
| Genere código, archivos de configuración o documentos a partir de un DSL. | Generación de código a partir de un lenguaje Domain-Specific |
| Personalice cómo se guardan los modelos en el archivo. | Consulte Personalización del almacenamiento de archivos y la serialización XML. |
| Guarde modelos en bases de datos u otros medios. | Sobrescribir YourLanguageDocData Consulte Personalización del almacenamiento de archivos y la serialización XML. |
| Integre varias DSL para que funcionen como parte de una aplicación. | Consulte Integración de modelos mediante Visual Studio Modelbus. |
| Permita que terceros amplíen su DSL y controle usted la extensión. |
Ampliar su DSL mediante MEF Uso compartido de clases entre DSLs usando una biblioteca DSL Definición de una directiva de bloqueo para crear segmentos de Read-Only |
Contenido relacionado
- Cómo definir un idioma de Domain-Specific
- Escribir código para personalizar un lenguaje específico de dominio
- SDK de modelado para Visual Studio: lenguajes Domain-Specific
Nota:
El componente Transformación de Plantillas de Texto se instala automáticamente como parte de la tarea Desarrollo de Extensiones de Visual Studio. También puede instalarlo desde la pestaña Componentes individuales del Instalador de Visual Studio, en la categoría SDK, bibliotecas y marcos . Instale el componente SDK de modelado desde la pestaña Componentes individuales .