共用方式為


自訂及擴充網域指定的語言

Visual Studio 的模型與視覺效果 SDK (VMSDK) 提供幾個層級定義模組化工具:

  1. 定義您可以使用 DSL 定義圖表的定義域專屬語言 (DSL)。 您可以快速建立圖表化的配標記法、 可讀取的 XML 格式,與基本所需工具,來產生程式碼和其他成品的 DSL。

    如需詳細資訊,請參閱 如何定義網域指定的語言

  2. 藉由使用 DSL 定義的更進階的功能來微調 DSL。 舉例來講,您可以讓其他使用者建立的項目時,出現的連結。 在 DSL 定義中,大部分是實現這些技巧,有些需要幾行程式碼。

  3. 使用程式碼,以擴充模組化工具。 VMSDK 特別為了讓您輕易地整合您的擴充功能從 DSL 定義產生的程式碼。 如需詳細資訊,請參閱 撰寫程式碼來自訂網域指定的語言

注意事項注意事項

當您更新的 DSL 定義檔後時,不要忘記按一下轉換所有的範本在方案總管] 的工具列上,才能重新建立您的方案。

本章節內容

若要達到這個效果

請參閱此主題

允許使用者設定圖形的色彩和樣式屬性。

圖案或連接線類別上按一下滑鼠右鍵,指到加入公開,然後按一下 [項目。

請參閱 自訂圖表上的展示

請在圖表上的共用內容,例如初始高度、 寬度、 色彩、 工具提示不同類別的模型項目類似。

使用圖形或連接器類別之間的繼承。 在衍生的圖形與衍生的網域類別之間的對應繼承父代的對應詳細資料。

或者,您也可以將不同的網域類別對應至相同的圖形類別。

一種模型項目會顯示不同的圖形內容。

將一個以上的圖形類別對應至相同的網域類別。 當您建置方案時,請依照下列的錯誤報告,並提供要求的程式碼,以決定要使用何種圖形。

圖形色彩或其他的功能,例如字型表示目前的狀態。

請參閱 更新圖案和接點來反映模型

建立規則,以更新公開的屬性。 請參閱 規則傳播模型內的變更

或者,您也可以使用 OnAssociatedPropertyChanged() 來更新非公開的功能,例如連結箭號或字型。

在 [圖形] 變為表示狀態的圖示。

DSL 細節] 視窗中設定裝飾的對應的可見性。 找出相同的位置上的數個映像裝飾。 請參閱 更新圖案和接點來反映模型

或者,您也可以覆寫ImageField.GetDisplayImage()。 請參閱 ImageField 中的範列。

設定任何圖形上的背景影像

若要新增的錨定的 ImageField 的 InitializeInstanceResources() 會覆寫。 請參閱 自訂圖表上的展示

任何深度巢狀圖形

設定內嵌樹狀目錄中遞迴。 定義可以包含圖形的 BoundsRules。 請參閱 自訂圖表上的展示

將附加於固定時間點上項目的界限的連接器。

定義內嵌的終端機項目,表示在圖表上的小連接埠。 若要修正的連接埠就地使用 BoundsRules。 請參閱電路圖表範例,在視覺化和模型的 SDK。

文字欄位會顯示衍生自其他值的值。

對應到計算] 或 [自訂存放網域屬性的文字裝飾。 如需詳細資訊,請參閱 計算及自訂的儲存區屬性

將圖形或模型元素間的變更傳播

請參閱 網域指定的語言中的驗證

將變更傳播到其他資源Visual Studio存放區以外的副檔名。

請參閱 事件處理常式傳播模型外的變更

屬性] 視窗會顯示相關項目的屬性。

設定轉送屬性。 請參閱 自訂屬性視窗

屬性類別

[屬性] 視窗分為稱為類別的區段。 設定類別的網域內容。 具有相同的類別名稱屬性會出現在相同的段落。 您也可以設定類別的關聯性的角色。

控制使用者存取網域內容

設定是可瀏覽為 false,則出現在 [屬性] 視窗中,在 run time 時,防止網域屬性。 您仍然可以將它對應至文字裝飾。

只有 UI 讀取防止使用者變更網域屬性。

程式的存取權的 [網域] 屬性不會受到影響。

變更名稱、 圖示和您的 DSL 模型總管] 中的節點的可見性。

請參閱 自訂模型總管

啟用 [複製]、 [剪下及貼上

設定啟用複製貼上 屬性的 編輯器 DSL 總管] 中的節點。

複製參考的連結和其目標時就會複製項目。 例如,複製註解附加到項目。

設定傳播複本 (由在網域關係,DSL 定義圖表中的一方線路) 「 來源 」 角色的屬性。

撰寫程式碼來覆寫 ProcessOnCopy 以取得更複雜的效果。

請參閱 自訂複製行為

刪除、 重設父代,或者在刪除項目時,請重新連結相關的項目中。

設定傳播刪除關聯角色的值。 更複雜的效果,覆寫ShouldVisitRelationship和ShouldVisitRolePlayer中的方法MyDslDeleteClosure中定義的類別DomainModel.cs

請參閱 自訂刪除行為

會保留圖案的版面配置和外觀,在 [複製] 及 [拖放。

加入要複製的圖案及連接線ElementGroupPrototype。 若要覆寫最方便的方法是ElementOperations.CreateElementGroupPrototype()

請參閱 自訂複製行為

將圖案貼在所選擇的位置,例如目前的游標位置。

覆寫ClipboardCommandSet.ProcessOnCopy()若要使用的特定位置的版本ElementOperations.Merge(). ,請參閱自訂複製行為

貼上建立其他連結

覆寫 ClipboardCommandSet.ProcessOnPasteCommand()

啟用拖中拖此圖表中,其他的 Dsl 或 UML 圖表和 Windows 項目

請參閱 HOW TO:加入拖放處理常式

允許圖形或工具,以將它們拖曳至子圖案,例如通訊埠,就好像它被拖曳至父代。

定義目標物件的類別,來轉送所置放的物件至父代的項目合併指示詞。 請參閱 自訂項目的建立和移動

讓圖案或將它們拖曳至圖形,有額外的連結或建立物件的工具。 例如,若要允許註解可以放到它是連結的項目。

定義元素合併指示詞在目標網域類別,並定義要產生連結。 在複雜的情況下,您可以新增自訂的程式碼。 請參閱 自訂項目的建立和移動

建立一組元件,使用一項工具。 例如,具有一組固定的連接埠的元件。

覆寫工具箱初始設定方法,在 ToolboxHelper.cs 中。 建立項目群組原型 (EGP) 包含的項目和其關聯性連結。 請參閱 自訂工具和工具箱

將主要] 和 [連接埠圖形包含在 EGP,或是定義連接埠圖案的位置,當執行個體化的 EGP 時 BoundsRules。 請參閱 BoundsRules 限制圖案位置和大小

使用連線的一種工具來具現化數種類型的關聯性。

新增連結連線指示詞 (LCD) 來連接產生器所叫用的工具。 LCDs 判斷從兩個項目類型的關聯性的型別。 若要使這項目的狀態而定,您可以新增自訂的程式碼。 請參閱 自訂工具和工具箱

自黏工具 – 使用者可以按兩下任何工具,以建立連續的多個圖形或連接器。

在 DSL 總管] 中,選取 Editor節點。 在 [屬性] 視窗中,設定使用自黏工具箱項目

定義功能表命令

請參閱 HOW TO:使用網域指定的語言修改標準功能表命令

限制與驗證規則的模型

請參閱 網域指定的語言中的驗證

程式碼、 組態檔或文件從產生的 DSL。

從網域指定的語言產生程式碼

自訂如何儲存模型檔。

請參閱 自訂檔案儲存體和 XML 序列化

儲存到資料庫或其他媒體的模式。

覆寫 YourLanguageDocData

請參閱 自訂檔案儲存體和 XML 序列化

將數個 Dsl 的整合,讓它們能夠做為單一應用程式的一部分。

請參閱 使用 Visual Studio Modelbus 整合模型

可讓您的 DSL 加以擴充,由協力廠商使用,並且控制延伸模組。

使用 MEF 擴充您的 DSL

使用 DSL 程式庫共用 DSL 之間的類別

定義鎖定原則來建立唯讀區段

請參閱

概念

如何定義網域指定的語言

Visualization and Modeling SDK - 網域指定的語言

其他資源

撰寫程式碼來自訂網域指定的語言