MvvmContext
MvvmContext組件是使用DevExpress MVVM框架開發MVVM應用程序的關鍵工具,該組件的API在概念部分的幫助主題中進行了描述。本主題將演示MvvmContext在設計時的功能。
您可以通過單擊組件右上角的相應按鈕來調用MvvmContext智能標記,此智能標記的鏈接提供以下功能。
- Adding new ViewModels:
要添加與此視圖相關的新ViewModel,請單擊Add ViewModel 鏈接(參見下圖)。

如果選中“Show generated code-behind”復選框,則ViewModel生成后,您將在代碼中移動。
這個動作在定義視圖的同一個文件(FormName.cs)中創建一個空白的ViewModel。對于現實生活中的應用程序,您可能希望所有的View和ViewModel都位于一個單獨的文件中,并分組到相應的文件夾中,使用“Add DevExpress Item”菜單從模板庫中添加一個“View和ViewModel”模板。
- Assigning a specific ViewModel to the MvvmContext:
使用智能標簽內的下拉菜單選擇分配給該組件的 ViewModel。如果清除Show All Types復選框,則僅顯示同一文件中的公共類和包含.ViewModel 的命名空間(類除外,其名稱以“Service”、“Message”、“Helper”和其他關鍵字結尾),否則下拉列表將顯示所有適當的類,Hide Namespace 復選框隱藏類的命名空間名稱,顯示在下拉列表中。如果您想查看完整的類名稱,請清除此復選框。
如果存在由MvvmContext組件生成的ViewModel,則會出現“Assign ViewModel”和“Remove ViewModel”選項(見下圖)。單擊這些鏈接只影響(分配給組件或刪除)由組件生成的ViewModel,而不管當前分配給組件的是哪個ViewModel。
- Generating RibbonControl links for existing commands:
如果有一個按鈕容器(例如,Ribbon Control或Bar Manager)位于承載MvvmContext組件的相同表單上,則Retrieve Commands鏈接顯示如下圖所示。

單擊此鏈接將啟動掃描ViewModel來查找常規命令和異步命令的進程,為每個找到的命令創建BarButtonItem,并將其綁定到相關命令,這些命令的名稱用作按鈕標題。如果命令具有標準名稱之一(打開,保存,創建,新建,刪除等),則會自動分配來自圖片庫和上下文相關圖像的相關符號。
提示:默認情況下,自動生成的按鈕將放在一個新的未命名的RibbonPageGroup中,您將需要重命名該組或手動重新排列按鈕,還可以在命令之前使用特定的數據注釋屬性。諸如Display(GroupName)、DisplayName、Image/DXImage等屬性將被識別并應用于自動生成的按鈕。
如果要刪除、恢復或修改任何生成的命令綁定,請單擊下面的“Edit…”鏈接,這將調用綁定表達式編輯器,如下圖所示。

在這里,您可以單擊Add (Confirm)按鈕的下拉菜單來添加所需的命令。下面的網格列出了已經添加的所有命令,在編輯器右側的屬性網格中,設置Target屬性來指定該命令將綁定到的UI元素,該編輯器不必手動編寫所有命令綁定,如Commands主題中所示。
- Registering services:
與自動生成功能區項目鏈接類似,單擊控件智能標簽底部的“檢索服務”鏈接會使MvvmContext組件找到位于視圖中所有與服務相關的控件,并在本地為每個控件注冊相應的服務。例如,如果您的視圖包含DocumentManager組件,DocumentManagerService將被注冊,下面的“Edit…”鏈接調用服務編輯器(見下圖),該編輯器提供添加新服務注冊或修改現有服務注冊的功能。

注意,相應的代碼不是添加到ViewModel中,而是添加到View’s .Designer.cs file中。