Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Visual Studio Modeling and Visualization SDK (VMSDK) bietet mehrere Ebenen, auf denen Sie Modellierungstools definieren können:
Definieren Sie eine domänenspezifische Sprache (DSL) mithilfe des DSL-Definitionsdiagramms. Sie können schnell ein DSL mit einer diagrammatischen Notation, einem lesbaren XML-Formular und den grundlegenden Tools erstellen, die zum Generieren von Code und anderen Artefakten erforderlich sind. Weitere Informationen finden Sie unter How to Define a Domain-Specific Language.
Optimieren Sie das DSL mithilfe erweiterter Funktionen der DSL-Definition. So können Sie beispielsweise zusätzliche Links anzeigen, wenn der Benutzer ein Element erstellt. Diese Techniken werden meist in der DSL-Definition erreicht, und einige erfordern einige Programmcodezeilen.
Erweitern Sie Ihre Modellierungstools mithilfe von Programmcode. VMSDK wurde speziell entwickelt, um die Integration Ihrer Erweiterungen in den Code zu erleichtern, der aus der DSL-Definition generiert wird. Weitere Informationen finden Sie unter Code schreiben, um eine domänenspezifische Sprache anzupassen.
Hinweis
Wenn Sie die DSL-Definitionsdatei aktualisiert haben, vergessen Sie nicht, auf der Symbolleiste des Projektmappen-Explorers auf "Alle Vorlagen transformieren" zu klicken, bevor Sie Ihre Lösung neu erstellen.
Artikelreferenz
| Um diesen Effekt zu erreichen | Beziehen Sie sich auf dieses Thema. |
|---|---|
| Zulassen, dass der Benutzer die Farb- und Formateigenschaften eines Shapes festlegen kann. | Klicken Sie mit der rechten Maustaste auf die Shape- oder Verbinderklasse, zeigen Sie auf "Exponiert hinzufügen", und klicken Sie auf ein Element. |
| Verschiedene Klassen von Modellelementen sehen im Diagramm ähnlich aus und teilen Eigenschaften wie anfängliche Höhe und Breite, Farbe und Kurzinfos. | Die Vererbung zwischen Formen oder Verbinderklassen verwenden. Zuordnungen zwischen abgeleiteten Shapes und abgeleiteten Domänenklassen erben die Zuordnungsdetails der übergeordneten Klassen. Oder ordnen Sie der gleichen Shape-Klasse unterschiedliche Domänenklassen zu. |
| Eine Klasse des Modellelements wird von verschiedenen Formenkontexten angezeigt. | Ordnen Sie mehr als eine Shape-Klasse derselben Domänenklasse zu. Wenn Sie die Lösung erstellen, folgen Sie dem Fehlerbericht, und geben Sie den angeforderten Code an, um zu entscheiden, welches Shape verwendet werden soll. |
| Formfarbe oder andere Features, z. B. Schriftart, geben den aktuellen Zustand an. | Siehe Formen und Verbinder aktualisieren, um das Modell zu reflektieren. Erstellen Sie eine Regel, die die verfügbar gemachten Eigenschaften aktualisiert. Siehe Regeln, die Änderungen innerhalb des Modells weitergeben. Oder verwenden Sie OnAssociatedPropertyChanged(), um nicht verfügbar gemachte Features wie Linkpfeile oder Schriftart zu aktualisieren. |
| Symbol für Shape-Änderungen, um den Zustand anzuzeigen. | Legen Sie die Sichtbarkeit des Decorator-Mappings im Fenster für DSL-Details fest. Suchen Sie mehrere Bilddekodierer an derselben Position. Siehe Aktualisieren von Shapes und Verbindern, um das Modell widerzuspiegeln. Oder überschreiben Sie ImageField.GetDisplayImage(). Siehe Beispiel in ImageField. |
| Festlegen eines Hintergrundbilds für ein beliebiges Shape | Überschreiben Sie InitializeInstanceResources(), um ein verankertes ImageField hinzuzufügen. |
| Verschachteln von Formen in einer beliebigen Tiefe | Richten Sie einen rekursiven Einbettungsbaum ein. Definieren Sie BoundsRules, die die Shapes enthalten sollen. |
| Fügen Sie Verbinder an festen Punkten an der Grenze eines Elements an. | Definieren Sie eingebettete Terminalelemente, dargestellt durch kleine Ports im Diagramm. Verwenden Sie BoundsRules, um die Ports an Ort und Stelle zu fixieren. Sehen Sie sich das Schaltkreisdiagrammbeispiel im Visualisierungs- und Modellierungs-SDK an. |
| Textfeld zeigt einen von anderen Werten abgeleiteten Wert an. | Ordnen Sie die Textdekoration einer Eigenschaft für berechnete oder benutzerdefinierte Speicherdomänen zu. Weitere Informationen finden Sie unter Berechnete und benutzerdefinierte Speichereigenschaften. |
| Übertragen von Änderungen zwischen Modellelementen oder zwischen Formen. | Siehe Überprüfung in einer domänenspezifischen Sprache. |
| Verteilen Sie Änderungen an Ressourcen wie Visual Studio-Erweiterungen außerhalb des Shops. | Siehe Ereignishandler, die Änderungen außerhalb des Modells weitergeben. |
| Im Eigenschaftenfenster werden Eigenschaften eines verknüpften Elements angezeigt. | Einrichten der Eigenschaftsweiterleitung. Siehe Anpassen des Eigenschaftenfensters. |
| Eigenschaftenkategorien | Das Eigenschaftenfenster ist in Abschnitte unterteilt, die als Kategorien bezeichnet werden. Legen Sie die Kategorie Ihrer Domäneneigenschaften fest. Eigenschaften mit demselben Kategorienamen werden im selben Abschnitt angezeigt. Sie können auch die Kategorie einer Beziehungsrolle festlegen. |
| Steuern des Benutzerzugriffs auf Domäneneigenschaften | Legen Sie "Is Browsable false" fest, um zu verhindern, dass eine Domäneneigenschaft zur Laufzeit im Eigenschaftenfenster angezeigt wird. Sie können es nach wie vor Textdekoratoren zuordnen. Ist die Benutzeroberfläche schreibgeschützt? hindert Benutzer daran, eine Domäneneigenschaft zu ändern. Der Programmzugriff auf die Domäneneigenschaft ist nicht betroffen. |
| Ändern Sie den Namen, das Symbol und die Sichtbarkeit von Knoten im Modell-Explorer Ihres DSL. | Siehe Anpassen des Modell-Explorers. |
| Kopieren, Ausschneiden und Einfügen aktivieren | Legen Sie die Enable Copy Paste-Eigenschaft des Editor-Knotens im DSL-Explorer fest. |
| Kopieren Sie Verweisverknüpfungslinks und deren Ziele, wenn ein Element kopiert wird. Kopieren Sie beispielsweise Kommentare, die an ein Element angefügt sind. | Legen Sie die Eigenschaft "Propagates Copy" der Rolle der Quelle fest (dargestellt durch die Linie auf einer Seite der Domänenbeziehung im DSL-Definitionsdiagramm). Schreiben Sie Code, um ProcessOnCopy außer Kraft zu setzen, um komplexere Effekte zu erzielen. Siehe Anpassen des Kopierverhaltens. |
| Löschen, neu verknüpfen oder neu zuordnen verwandter Elemente, wenn ein Element gelöscht wird. | Definieren Sie den Wert Löschweitergabe einer Beziehungsrolle. Für komplexere Effekte überschreiben Sie die Methoden ShouldVisitRelationship und ShouldVisitRolePlayer in der Klasse MyDslDeleteClosure, die in DomainModel.cs definiert ist. |
| Behalten Sie das Shape-Layout und die Darstellung beim Kopieren und Ziehen bei. | Fügen Sie ElementGroupPrototype die kopierten Formen und Verbindungen hinzu. Die bequemste Methode zum Überschreiben ist ElementOperations.CreateElementGroupPrototype()Siehe Anpassen des Kopierverhaltens. |
| Fügen Sie Shapes an einer ausgewählten Position ein, z. B. an der aktuellen Cursorposition. | Setzen Sie ClipboardCommandSet.ProcessOnCopy() außer Kraft, um die standortspezifische Version von ElementOperations.Merge(). zu verwenden. Weitere Informationen finden Sie unter Anpassen des Kopierverhaltens. |
| Zusätzliche Links beim Einfügen erstellen | Override ClipboardCommandSet.ProcessOnPasteCommand() |
| Aktivieren Sie Drag-and-Drop aus diesem Diagramm, anderen DSLs und Windows-Elementen. | So fügen Sie einen Drag-and-Drop-Handler hinzu |
| Zulassen, dass ein Shape oder Tool auf ein untergeordnetes Shape, wie einen Port, gezogen werden kann, als ob es auf das übergeordnete Shape gezogen würde. | Definieren Sie eine Elementzusammenführungsdirektive für die Zielobjektklasse, um das abgelegte Objekt an das übergeordnete Objekt weiterzuleiten. Siehe Anpassen der Elementerstellung und -bewegung. |
| Zulassen, dass eine Form oder ein Tool auf eine Form gezogen wird, sodass dabei zusätzliche Verknüpfungen oder Objekte erstellt werden. Um beispielsweise zuzulassen, dass ein Kommentar auf einem Element abgelegt wird, mit dem es verknüpft werden soll. | Definieren Sie eine Elementzusammenführungsdirektive für die Zieldomänenklasse, und definieren Sie die zu generierenden Verknüpfungen. In komplexen Fällen können Sie benutzerdefinierten Code hinzufügen. Siehe Anpassen der Elementerstellung und -bewegung. |
| Erstellen Sie eine Gruppe von Elementen mit einem Tool. Beispielsweise eine Komponente mit einem festen Satz von Ports. | Überschreiben Sie die Toolboxinitialisierungsmethode in ToolboxHelper.cs. Erstellen Sie einen Elementgruppenprototyp (ELEMENT Group Prototype, EGP), der die Elemente und deren Beziehungslinks enthält. Siehe Anpassen von Tools und der Toolbox. Schließen Sie entweder die Haupt- und Port-Shapes in die EGP ein, oder definieren Sie "BoundsRules", um die Port-Shapes zu positionieren, wenn die EGP instanziiert wird. |
| Verwenden Sie ein Verbindungstool, um mehrere Arten von Beziehungen zu instanziieren. | Fügen Sie link Connect-Direktiven (LCD) zum Verbindungs-Generator hinzu, der vom Tool aufgerufen wird. Die LCDs bestimmen den Typ der Beziehung aus den Typen der beiden Elemente. Damit dies von den Zuständen der Elemente abhängt, können Sie benutzerdefinierten Code hinzufügen. Siehe Anpassen von Tools und der Toolbox. |
| Hafttools – der Benutzer kann auf ein beliebiges Tool doppelklicken, um viele Formen oder Verbinder nacheinander zu erstellen. | Wählen Sie im DSL-Explorer den Editor Knoten aus. Setzen Sie im Eigenschaftenfenster Sticky Toolbox Items verwenden fest. |
| Definieren von Menübefehlen | Vorgehensweise: Ändern eines Standardmenübefehls |
| Einschränken des Modells mit Gültigkeitsregeln | Siehe Validierung in einer domänenspezifischen Sprache |
| Generieren Sie Code, Konfigurationsdateien oder Dokumente aus einem DSL. | Generieren von Code aus einer Domain-Specific Sprache |
| Passen Sie an, wie Modelle in einer Datei gespeichert werden. | Siehe Anpassen der Dateispeicher- und XML-Serialisierung |
| Speichern Sie Modelle in Datenbanken oder anderen Medien. | Überschreiben YourLanguageDocData Siehe Anpassen der Dateispeicher- und XML-Serialisierung |
| Integrieren Sie mehrere DSLs, damit sie als Teil einer Anwendung funktionieren. | Siehe Integrieren von Modellen mithilfe von Visual Studio Modelbus. |
| Ermöglichen Sie es, Ihr DSL von Dritten zu erweitern und die Erweiterung zu kontrollieren. |
Erweitern Sie Ihr DSL mit MEF Teilen von Klassen zwischen DSLs unter Verwendung einer DSL-Bibliothek Definieren einer Sperrrichtlinie zum Erstellen von Read-Only Segmenten |
Verwandte Inhalte
- So definieren Sie eine Domain-Specific Sprache
- Schreiben von Code zur Anpassung einer domänenspezifischen Sprache
- Modeling SDK für Visual Studio – Domänenspezifische Sprachen
Hinweis
Die Textvorlagentransformationskomponente wird automatisch als Teil der Visual Studio-Erweiterungsentwicklungsworkloads installiert. Sie können es auch auf der Registerkarte "Einzelne Komponenten " von Visual Studio Installer unter der Kategorie SDKs, Bibliotheken und Frameworks installieren. Installieren Sie die Modellierungs-SDK-Komponente auf der Registerkarte "Einzelne Komponenten ".