翻譯|使用教程|編輯:龔雪|2022-03-09 10:17:29.813|閱讀 235 次
概述:本系列內容將開始根據DevExpress WinForms MVVM創建示例應用程序,本文繼續講解創建與ViewModel相關的視圖。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
在上文中,Scaffolding Wizard 為您創建了ViewModel,現在您需要創建與這些ViewModel相關的視圖。
主應用程序視圖是您的主要應用程序表單。 要構建其內容,請刪除任何適當的內容容器(, , 等)和包含打開模塊按鈕的 。
提示:所選內容容器的類型將影響您以后需要使用的服務。 如果您根本不刪除任何內容容器,將需要使用 WindowedDocumentManagerService 并且所有模塊都將作為單獨的表單打開。
例如您選擇了文檔管理器,在這種情況下,您的主視圖將如下所示。
將所有功能區項目保留為fakes - 您將在下一步中提供它們的功能。
最后,將 MvvmContext 組件拖放到表單上,并在其智能標記中選擇與此視圖關聯的主視圖模型。 由 Scaffolding Wizard 生成的主 ViewModel 將被稱為 <Your_DbContext_Name>ViewModel。
上一步中生成的Account、Transaction 和 Category 實體的 ViewModel 已經具有基本功能 - 創建新記錄、添加和刪除現有記錄等,現在為這些 ViewModel 中的每一個創建一個相關的視圖。
1. 添加一個新的 Views 解決方案文件夾,其中包含三個子文件夾:Account、Category 和 Transaction。 為每個文件夾放置一個新的 UserControl - 這些將是您的詳細視圖(參見下圖)。
2. 打開 AccountView 用戶控件并創建一個簡單的 UI - 顯示帳戶的 GridControl 和執行簡單操作(添加、創建、修改和刪除帳戶)的 RibbonControl,可以得到這樣的結果:
3. 與主視圖類似,將 MvvmContext 組件拖放到用戶控件上,并將 AccountCollectionViewModel 設置為相關的 ViewModel。
重要提示:Scaffolding Wizard 將為每個表生成兩個 ViewModel,存儲在 DbContext 中。 例如,對于 Transactions 表,它將生成 TransactionsViewModel 和 TransactionsCollectionViewModel。 第一個 ViewModel 設計用于處理單個事務對象,適用于稍后創建的編輯表單;第二個 ViewModel 與整個交易集合一起使用,應該在詳細視圖中使用。
4. 現在您需要將項目添加到您的 RibbonControl,與主 ViewModel 不同,在這里您可以自動生成項目。 您自動生成的 AccountCollectionViewModel 派生自父 CollectionViewModel,它聲明了使用集合的基本方法 - 添加新對象、刷新集合、編輯當前對象等,此功能位于命令中。MvvmContext 組件能夠從 ViewModel 檢索命令并將相應的按鈕添加到 RibbonControl,為此,請調用組件智能標簽并單擊 ‘Retrieve Commands’鏈接。
這將檢索四個命令 - 新建、編輯、刷新和刪除,將為它們中的每一個創建一個相應的 RibbonControl 項。 重建解決方案,這些自動生成的項目將自動從圖像庫和上下文相關圖像接收適當的圖像。
5. 如果您檢查 CollectionViewModel,將看到此 ViewModel 聲明的命令比添加到功能區控件的這四個命令還多。 未添加所有剩余命令的原因是因為它們標有特定的顯示,該屬性從命令編輯器中“隱藏”了此命令。
C#
[Display(AutoGenerateField = false)] public void Close() { if(DocumentOwner != null) DocumentOwner.Close(this); }
VB.NET
<Display(AutoGenerateField := False)> Public Sub Close() If DocumentOwner IsNot Nothing Then DocumentOwner.Close(Me) End If End Sub
要為編輯器 ‘open’ 此命令,請將 false 替換為 true 或簡單地刪除整個屬性。 當您這樣做時, ‘Close’ 命令應出現在命令編輯器中,您將能夠為其生成功能區項目。
進一步的 CollectionViewModel 檢查將顯示一些命令,如‘Edit’和‘Delete’,后面跟著相應的布爾值“Can…”屬性。 在 POCO ViewModels 中,此類屬性充當 CanExecute 條件,指定相關命令當前是否可用,因此綁定到該命令的 UI 元素當前是否啟用。
C#
public bool CanEdit(TProjection projectionEntity) { return projectionEntity != null && !IsLoading; }
VB.NET
Public Function CanEdit(ByVal projectionEntity As TProjection) As Boolean Return projectionEntity IsNot Nothing AndAlso Not IsLoading End Function
這是一種合理的方法,因為如果當前沒有選擇集合對象(例如,特定交易),您將無法單擊‘Edit’等按鈕。 這意味著 Scaffolding Wizard 也會處理這些細節,您無需手動實現此邏輯。
6. 重復前面的步驟,為 CategoriesCollection 和 TransactionsCollection ViewModels 創建類似的詳細視圖。
DevExpress WinForm擁有180+組件和UI庫,能為Windows Forms平臺創建具有影響力的業務解決方案。DevExpress WinForms能完美構建流暢、美觀且易于使用的應用程序,無論是Office風格的界面,還是分析處理大批量的業務數據,它都能輕松勝任!
更多產品正版授權詳情及優惠,歡迎咨詢
DevExpress技術交流群5:742234706 歡迎一起進群討論
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網