MvvmContext
MvvmContext組件是使用DevExpress MVVM框架開發(fā)MVVM應(yīng)用程序的關(guān)鍵工具,該組件的API在概念部分的幫助主題中進行了描述。本主題將演示MvvmContext在設(shè)計時的功能。
您可以通過單擊組件右上角的相應(yīng)按鈕來調(diào)用MvvmContext智能標(biāo)記,此智能標(biāo)記的鏈接提供以下功能。
- Adding new ViewModels:
要添加與此視圖相關(guān)的新ViewModel,請單擊Add ViewModel 鏈接(參見下圖)。
如果選中“Show generated code-behind”復(fù)選框,則ViewModel生成后,您將在代碼中移動。
這個動作在定義視圖的同一個文件(FormName.cs)中創(chuàng)建一個空白的ViewModel。對于現(xiàn)實生活中的應(yīng)用程序,您可能希望所有的View和ViewModel都位于一個單獨的文件中,并分組到相應(yīng)的文件夾中,使用“Add DevExpress Item”菜單從模板庫中添加一個“View和ViewModel”模板。
- Assigning a specific ViewModel to the MvvmContext:
使用智能標(biāo)簽內(nèi)的下拉菜單選擇分配給該組件的 ViewModel。如果清除Show All Types復(fù)選框,則僅顯示同一文件中的公共類和包含.ViewModel 的命名空間(類除外,其名稱以“Service”、“Message”、“Helper”和其他關(guān)鍵字結(jié)尾),否則下拉列表將顯示所有適當(dāng)?shù)念?,Hide Namespace 復(fù)選框隱藏類的命名空間名稱,顯示在下拉列表中。如果您想查看完整的類名稱,請清除此復(fù)選框。
如果存在由MvvmContext組件生成的ViewModel,則會出現(xiàn)“Assign ViewModel”和“Remove ViewModel”選項(見下圖)。單擊這些鏈接只影響(分配給組件或刪除)由組件生成的ViewModel,而不管當(dāng)前分配給組件的是哪個ViewModel。
- Generating RibbonControl links for existing commands:
如果有一個按鈕容器(例如,Ribbon Control或Bar Manager)位于承載MvvmContext組件的相同表單上,則Retrieve Commands鏈接顯示如下圖所示。
單擊此鏈接將啟動掃描ViewModel來查找常規(guī)命令和異步命令的進程,為每個找到的命令創(chuàng)建BarButtonItem,并將其綁定到相關(guān)命令,這些命令的名稱用作按鈕標(biāo)題。如果命令具有標(biāo)準(zhǔn)名稱之一(打開,保存,創(chuàng)建,新建,刪除等),則會自動分配來自圖片庫和上下文相關(guān)圖像的相關(guān)符號。
提示:默認(rèn)情況下,自動生成的按鈕將放在一個新的未命名的RibbonPageGroup中,您將需要重命名該組或手動重新排列按鈕,還可以在命令之前使用特定的數(shù)據(jù)注釋屬性。諸如Display(GroupName)、DisplayName、Image/DXImage等屬性將被識別并應(yīng)用于自動生成的按鈕。
如果要刪除、恢復(fù)或修改任何生成的命令綁定,請單擊下面的“Edit…”鏈接,這將調(diào)用綁定表達(dá)式編輯器,如下圖所示。
在這里,您可以單擊Add (Confirm)按鈕的下拉菜單來添加所需的命令。下面的網(wǎng)格列出了已經(jīng)添加的所有命令,在編輯器右側(cè)的屬性網(wǎng)格中,設(shè)置Target屬性來指定該命令將綁定到的UI元素,該編輯器不必手動編寫所有命令綁定,如Commands主題中所示。
- Registering services:
與自動生成功能區(qū)項目鏈接類似,單擊控件智能標(biāo)簽底部的“檢索服務(wù)”鏈接會使MvvmContext組件找到位于視圖中所有與服務(wù)相關(guān)的控件,并在本地為每個控件注冊相應(yīng)的服務(wù)。例如,如果您的視圖包含DocumentManager組件,DocumentManagerService將被注冊,下面的“Edit…”鏈接調(diào)用服務(wù)編輯器(見下圖),該編輯器提供添加新服務(wù)注冊或修改現(xiàn)有服務(wù)注冊的功能。
注意,相應(yīng)的代碼不是添加到ViewModel中,而是添加到View’s .Designer.cs file中。