Visual Studio 模型化和視覺化 SDK (VMSDK) 提供數個層級,您可以在其中定義模型化工具:
使用 DSL 定義圖定義領域特定語言 (DSL)。 您可以使用圖表表示法、可讀的 XML 表單,以及產生程式碼及其他構件所需的基本工具,快速建立 DSL。 如需詳細資訊,請參閱如何 定義 Domain-Specific 語言。
使用 DSL 定義的更進階功能來微調 DSL。 例如,您可以在使用者建立元素時顯示其他連結。 這些技術大多在DSL定義中實現,有些需要幾行程式代碼。
使用程式代碼來擴充您的建模工具。 VMSDK 專為讓您輕鬆地將延伸模組與從 DSL 定義產生的程式碼整合而來。 如需詳細資訊,請參閱 撰寫程式碼以自訂 Domain-Specific 語言。
備註
當您更新 DSL 定義檔案時,請不要忘記在重建解決方案之前,按一下 [方案總管] 工具列中的 [轉換所有範本]。
文章參考
| 為了達到這個效果 | 請參閱本主題 |
|---|---|
| 允許使用者設定圖形的色彩和樣式屬性。 | 以滑鼠右鍵按一下圖形或連接器類別,指向 [新增可見項目],然後按一下項目。 |
| 不同類別的模型元素在圖表上看起來相似,共用初始高度和寬度、顏色、工具提示等屬性。 | 在圖形或連接器類別之間使用繼承。 衍生圖形與衍生網域類別之間的對應會繼承父系的對應詳細資料。 或者,將不同的網域類別對應至相同的圖形類別。 |
| 模型元素類別由不同的形狀上下文顯示。 | 將多個圖形類別對應至相同的網域類別。 當您建置解決方案時,請遵循錯誤報告並提供要求的程式碼,以決定要使用的圖形。 |
| 形狀、顏色或其他功能(例如字體)表示當前狀態。 | 請參閱 更新造型和連接器以反映模型。 建立更新暴露屬性值的規則。 請參閱 規則在模型內傳播變更。 或者,使用 OnAssociatedPropertyChanged() 來更新未公開的功能,例如連結箭頭或字型。 |
| 形狀上的圖示會變更以指示狀態。 | 在 DSL 詳細資料視窗中設定 decorator 映射的可見度。 在相同位置尋找數個影像修飾器。 請參閱 更新造型和連接器以反映模型。 或者,覆蓋 ImageField.GetDisplayImage()。 請參閱中的 ImageField範例。 |
| 在任何形狀上設置背景圖像 | 覆寫 InitializeInstanceResources() 以新增一個具錨定功能的 ImageField。 |
| 將形狀巢狀化至任何深度 | 設定遞迴內嵌樹狀結構。 定義 BoundsRules 以包含圖形。 |
| 在元素邊界上的固定點貼附連接器。 | 定義內嵌終端元素,在圖表上以小連接埠表示。 使用 BoundsRules 固定埠位置。 請參閱 Visualization and Modeling SDK 中的電路圖範例。 |
| 文字欄位顯示衍生自其他值的值。 | 將文字裝飾對應至「計算型」或「自訂儲存」屬性。 如需詳細資訊,請參閱 計算和自訂儲存屬性。 |
| 在模型元素之間或形狀之間傳播變更 | 請參閱 Domain-Specific 語言的驗證。 |
| 將變更傳播至資源,例如存放區外部的其他 Visual Studio 延伸模組。 | 請參閱 事件處理器傳播模型外的變更。 |
| 屬性視窗顯示相關元素的屬性。 | 設定屬性轉送。 請參閱 自訂「內容」視窗。 |
| 屬性類別 | 屬性視窗分為稱為類別的區段。 設定網域屬性的 類別 。 具有相同類別名稱的屬性將顯示在同一區段中。 您也可以設定關係角色的 類別 。 |
| 控制使用者對網域屬性的存取權 | 在執行階段,將 Is Browsable 設定為 false,以防止網域屬性出現在 [屬性] 視窗中。 您仍然可以將其映射到文本裝飾器。 是 UI 唯讀,可 防止使用者變更網域屬性。 程式對網域屬性的存取權不受影響。 |
| 變更 DSL 模型總管中節點的名稱、圖示和可見度。 | 請參閱 自訂模型總管。 |
| 啟用複製、剪下和貼上 | 在 DSL Explorer 中設定編輯器節點的 啟用複製貼上 屬性。 |
| 每當複製元素時,複製參考連結及其目標。 例如,複製附加至項目的註解。 | 設定來源角色的 [ 傳播複製 ] 屬性 (由 DSL 定義圖表中網域關聯性一側的線表示) 。 編寫程式碼來覆蓋 ProcessOnCopy 以實現更複雜的效果。 請參閱 自訂複製行為。 |
| 刪除元素時,可以刪除相關元素,重新指定父系或重新連結。 | 設定關係角色的「傳播刪除」值。 對於更複雜的效果,請覆寫ShouldVisitRelationship和ShouldVisitRolePlayer方法,這些方法在MyDslDeleteClosure類別中定義,並在DomainModel.cs中定義。 |
| 在複製和拖放時保留形狀佈局和外觀。 | 將圖形和連接器新增至複製的 ElementGroupPrototype。 最方便的覆寫方法是 ElementOperations.CreateElementGroupPrototype()請參閱 自訂複製行為。 |
| 將形狀貼到所選位置,例如目前游標位置。 | 覆寫ClipboardCommandSet.ProcessOnCopy()以使用ElementOperations.Merge().的地點特定版本,請參閱自訂影本行為。 |
| 在貼上時建立額外連結 | 覆寫 ClipboardCommandSet.ProcessOnPasteCommand() |
| 啟用從此圖表、其他 DSL 以及 Windows 元素的拖放功能 | 請參閱 如何:新增拖放處理常式 |
| 允許將圖案或工具拖曳到子圖案上,例如埠,就像拖曳到父圖案一樣。 | 在目標物件類別上定義「元素合併指引」,以將捨棄的物件轉遞至父項。 請參閱 自訂元素建立和移動。 |
| 允許將形狀或工具拖曳到形狀上,並建立其他連結或物件。 例如,允許將註解拖放到要連結的項目上。 | 在目標網域類別上定義元素合併指令,並定義要產生的連結。 在複雜的情況下,您可以新增自訂程式碼。 請參閱 自訂元素建立和移動。 |
| 使用一個工具創建一組元素。 例如,具有一組固定連接埠的元件。 | 在ToolboxHelper.cs中覆寫工具箱的初始化方法。 建立包含元素及其關係鏈結的「元素群組原型 (EGP)」。 請參閱 自訂工具和工具箱。 在 EGP 中併入主體及埠配置,或定義 BoundsRules 以在實例化 EGP 時定位埠配置。 |
| 使用一個連線工具來實例化數種類型的關係。 | 將「連結連線指引 (LCD)」新增至工具所叫用的「連線產生器」。 LCD 會根據兩個元素的類型來決定關係的類型。 若要讓這取決於元素的狀態,您可以新增自訂程式碼。 請參閱 自訂工具和工具箱。 |
| 黏性工具 - 使用者可以雙擊任何工具,以連續建立許多形狀或連接器。 | 在 DSL 總管中,選取節點 Editor 。 在「屬性」視窗中,設定 「使用黏性工具箱項目」。 |
| 定義功能表指令 | 請參閱 如何:修改標準功能表命令 |
| 使用驗證規則限制模型 | 請參閱 領域專屬語言中的驗證 |
| 從 DSL 產生程式碼、設定檔或文件。 | 從 Domain-Specific 語言產生程式碼 |
| 自訂模型儲存至檔案的方式。 | 請參閱 自訂檔案儲存體和 XML 序列化 |
| 將模型儲存至資料庫或其他媒體。 | 覆寫 YourLanguageDocData 請參閱 自訂檔案儲存體和 XML 序列化 |
| 整合多個 DSL,以便它們作為一個應用程式的一部分運作。 | 請參閱 使用 Visual Studio Modelbus 整合模型。 |
| 允許第三方擴展您的 DSL,並控制擴展。 |
使用 MEF 擴充 DSL 利用 DSL 程式庫在 DSL 之間共用類別 定義鎖定原則以建立 Read-Only 區段 |
相關內容
備註
文字範本轉換元件會自動安裝為 Visual Studio 延伸模組開發工作負載的一部分。 您也可以從 Visual Studio 安裝程式的 [個別元件] 索引標籤在 [SDK、程式庫和架構] 類別下安裝它。 從 個別元件 索引標籤安裝 Modeling SDK 元件。