Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O VMSDK (SDK de Modelagem e Visualização) do Visual Studio fornece vários níveis nos quais você pode definir ferramentas de modelagem:
Defina uma DSL (linguagem específica do domínio) usando o diagrama de Definição de DSL. Você pode criar rapidamente uma DSL com uma notação diagramática, um formulário XML legível e as ferramentas básicas necessárias para gerar código e outros artefatos. Para obter mais informações, consulte Como definir um idioma de Domain-Specific.
Ajuste a DSL usando funcionalidades mais avançadas da definição de DSL. Por exemplo, você pode fazer links adicionais aparecerem quando o usuário cria um elemento. Essas técnicas são obtidas principalmente na Definição de DSL e algumas exigem algumas linhas de código do programa.
Estenda suas ferramentas de modelagem usando o código do programa. O VMSDK foi projetado especificamente para facilitar a integração de suas extensões com o código gerado a partir da Definição de DSL. Para obter mais informações, consulte Escrever código para personalizar um idioma de Domain-Specific.
Observação
Quando você tiver atualizado o arquivo definições de DSL, não se esqueça de clicar em Transformar Todos os Modelos na barra de ferramentas do Gerenciador de Soluções antes de recompilar sua solução.
Referência de artigo
| Para obter esse efeito | Consulte este tópico |
|---|---|
| Permitir que o usuário defina as propriedades de cor e estilo de uma forma. | Clique com o botão direito do mouse na forma ou classe do conector, aponte para Adicionar Exposto e clique em um item. |
| Diferentes classes de elemento de modelo são semelhantes no diagrama, compartilhando propriedades como altura e largura iniciais, cor, dicas de ferramenta. | Use a herança entre formas ou classes de conector. Mapeamentos entre formas derivadas e classes de domínio derivadas herdam os detalhes de mapeamento dos pais. Ou mapeie classes de domínio diferentes para a mesma classe de forma. |
| Uma classe de elemento de modelo é exibida por diferentes contextos de formas. | Mapeie mais de uma classe de forma para a mesma classe de domínio. Ao criar a solução, siga o relatório de erros e forneça o código solicitado para decidir qual forma usar. |
| Cor da forma ou outros recursos, como fonte, indicam o estado atual. | Consulte Atualizando formas e conectores para refletir o modelo. Crie uma regra que mantenha atualizadas as propriedades expostas. Consulte Regras que Propagam Alterações no Modelo. Ou use OnAssociatedPropertyChanged() para atualizar recursos não expostos, como setas de link ou fonte. |
| Ícone na forma muda para indicar o estado. | Na janela Detalhes da DSL, defina a visibilidade do mapeamento do decorador. Localize vários decoradores de imagem na mesma posição. Consulte Atualizando Formas e Conectores para Refletir o Modelo. Ou substitua ImageField.GetDisplayImage(). Veja o exemplo em ImageField. |
| Definir uma imagem de plano de fundo em qualquer formato | Substitua InitializeInstanceResources() para adicionar um ImageField ancorado. |
| Aninhar formas a qualquer profundidade | Configure uma árvore de inserção recursiva. Defina BoundsRules para conter as formas. |
| Anexar conectores em pontos fixos no limite de um elemento. | Defina elementos de terminal inseridos, representados por portas pequenas no diagrama. Use BoundsRules para fixar as portas no lugar. Consulte o exemplo de Diagrama de Circuito no SDK de Visualização e Modelagem. |
| O campo de texto exibe um valor derivado de outros valores. | Mapeie o decorador de texto para uma propriedade de domínio de Armazenamento Calculado ou Personalizado. Para obter mais informações, consulte Propriedades de Armazenamento Calculadas e Personalizadas. |
| Propagar alterações entre elementos de modelo ou entre formas | Consulte a Validação em um idioma Domain-Specific. |
| Propagar alterações em recursos, como outras extensões do Visual Studio fora da loja. | Consulte Manipuladores de Eventos para Propagar Alterações Fora do Modelo. |
| A janela de propriedade exibe as propriedades de um elemento relacionado. | Configurar o Encaminhamento de Propriedades. Consulte Personalizando a janela Propriedades. |
| Categorias de propriedade | A janela de propriedades é dividida em seções chamadas categorias. Defina a categoria de suas propriedades de domínio. As propriedades com o mesmo nome de categoria serão exibidas na mesma seção. Você também pode definir a categoria de uma função de relação. |
| Controlar o acesso do usuário às propriedades do domínio | Defina Is Browsable como falso para impedir que uma propriedade de domínio apareça na janela de Propriedades em tempo de execução. Você ainda pode mapeá-lo para decoradores de texto. A interface de usuário somente leitura impede que usuários alterem uma propriedade de domínio. O acesso de programa à propriedade de domínio não é afetado. |
| Altere o nome, o ícone e a visibilidade dos nós no gerenciador de modelos da DSL. | Consulte Personalizando o Gerenciador de Modelos. |
| Habilitar copiar, recortar e colar | Defina a propriedade Habilitar Copiar Colar do nó editor no Gerenciador de DSL. |
| Copie links de referência e seus destinos sempre que um elemento for copiado. Por exemplo, copie comentários anexados a um item. | Defina a propriedade Propagates Copy da função de origem (representada pela linha em um lado da relação de domínio no diagrama de Definição de DSL). Escreva código para substituir ProcessOnCopy para obter efeitos mais complexos. Consulte Personalizando o comportamento da cópia. |
| Exclua, reatribua ou reconecte os elementos relacionados quando um elemento é excluído. | Defina o valor Propagates Delete de uma função de relação. Para efeitos mais complexos, substitua os métodos ShouldVisitRelationship e ShouldVisitRolePlayer na classe MyDslDeleteClosure, definidos em DomainModel.cs. |
| Preservar o layout e a aparência da forma ao copiar e arrastar-e-soltar. | Adicione as formas e conectores ao copiado ElementGroupPrototype. O método mais conveniente para substituir é ElementOperations.CreateElementGroupPrototype()Consulte Personalizando o comportamento de cópia. |
| Posicione formas em um local escolhido, como a posição atual do cursor. | Substitua ClipboardCommandSet.ProcessOnCopy() para utilizar a versão específica do local de ElementOperations.Merge(). Consulte Personalizando o Comportamento da Cópia. |
| Criar links adicionais na colagem | Sobrescrever ClipboardCommandSet.ProcessOnPasteCommand() |
| Habilitar arrastar e soltar deste diagrama, outros DSLs e elementos do Windows | Veja como adicionar um manipulador de arrastar e soltar |
| Permitir que uma forma ou ferramenta seja arrastada para uma forma filha, como uma porta, como se estivesse sendo arrastada para a forma mãe. | Defina uma Diretiva de Mesclagem de Elementos na classe de objeto alvo para encaminhar o objeto descartado ao elemento pai. Consulte Personalização da Criação e Movimento de Elementos. |
| Permitir que uma forma ou ferramenta seja arrastada para uma forma e tenha links ou objetos adicionais criados. Para permitir, por exemplo, que um comentário seja arrastado para um item ao qual ele deve ser ligado. | Defina uma diretiva de mesclagem de elementos na classe de domínio de destino e defina os links a serem gerados. Em casos complexos, você pode adicionar código personalizado. Consulte Personalização da criação e movimento de elementos. |
| Crie um grupo de elementos com uma ferramenta. Por exemplo, um componente com um conjunto fixo de portas. | Sobrescreva o método de inicialização da caixa de ferramentas em ToolboxHelper.cs. Crie um Protótipo de Grupo de Elementos (EGP) que contém os elementos e seus links de relação. Consulte Personalizando Ferramentas e a Caixa de Ferramentas. Inclua as formas principais e de porta no EGP ou defina BoundsRules para posicionar as formas de porta quando o EGP for instanciado. |
| Use uma ferramenta de conexão para criar diferentes tipos de relações. | Adicione Diretivas de Conexão de Link (LCD) ao Construtor de Conexões que é invocado pela ferramenta. Os LCDs determinam o tipo da relação a partir dos tipos dos dois elementos. Para fazer isso depender dos estados dos elementos, você pode adicionar código personalizado. Consulte Personalizando Ferramentas e a Caixa de Ferramentas. |
| Ferramentas autoadesivas – o usuário pode clicar duas vezes em qualquer ferramenta para criar muitas formas ou conectores sucessivamente. | No Gerenciador de DSL, selecione o nó Editor. Na janela Propriedades, defina Usar Itens Fixos da Caixa de Ferramentas. |
| Definir comandos de menu | Veja como modificar um comando de menu padrão |
| Restringir o modelo com regras de validação | Consulte validação em uma linguagem específica de domínio |
| Gerar código, arquivos de configuração ou documentos de uma DSL. | Gerando código de uma linguagem Domain-Specific |
| Personalize como os modelos são salvos no arquivo. | Consulte Personalizando o Armazenamento de Arquivos e a Serialização XML |
| Salve modelos em bancos de dados ou outras mídias. | Desativar DocData de YourLanguage Consulte Personalizando o Armazenamento de Arquivos e a Serialização XML |
| Integre várias DSLs para que funcionem como parte de um aplicativo. | Consulte a integração de modelos usando o Visual Studio Modelbus. |
| Permita que terceiros estendam sua DSL e controle essa extensão. |
Estender sua DSL usando o MEF Compartilhando classes entre DSLs usando uma biblioteca DSL Definindo uma política de bloqueio para criar segmentos de Read-Only |
Conteúdo relacionado
- Como definir um idioma de Domain-Specific
- Escrevendo código para personalizar um idioma de Domain-Specific
- SDK de modelagem para Visual Studio – linguagens de Domain-Specific
Observação
O componente Transformação de Modelo de Texto é instalado automaticamente como parte da carga de trabalho de desenvolvimento de extensões do Visual Studio. Você também pode instalá-lo na guia Componentes individuais do Instalador do Visual Studio, na categoria SDKs, bibliotecas e estruturas . Instale o componente SDK de Modelagem da guia Componentes individuais .