翻譯|使用教程|編輯:龔雪|2022-03-02 10:23:36.157|閱讀 294 次
概述:本系列內容將開始根據(jù)DevExpress WinForms MVVM創(chuàng)建示例應用程序,并學習如何使用 Scaffolding Wizard。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
在本文中,您將開始創(chuàng)建根據(jù) MVVM 模式構建的示例應用程序,并學習如何使用 Scaffolding Wizard。
1. 創(chuàng)建一個新的WinForms應用程序。 要創(chuàng)建項目的數(shù)據(jù)模型,請?zhí)砑右粋€新的模型文件夾并使用下面的代碼片段創(chuàng)建三個類——帳戶、交易和類別,這些類使用數(shù)據(jù)注釋屬性并要求將 System.ComponentModel.DataAnnotations 庫包含在您的項目中。
賬戶數(shù)據(jù)模型
C#
using System.ComponentModel.DataAnnotations; namespace MVVMExpenses.DataModels { public class Account { [Key, Display(AutoGenerateField = false)] public long ID { get; set; } [Required, StringLength(30, MinimumLength = 4)] [Display(Name = "ACCOUNT")] public string Name { get; set; } [DataType(DataType.Currency)] [Display(Name = "AMOUNT")] public decimal Amount { get; set; } public override string ToString() { return Name + " (" + Amount.ToString("C") + ")"; } public virtual ICollection<Transaction> Transactions { get; set; } } }
VB.NET
Imports System.ComponentModel.DataAnnotations Namespace MVVMExpenses.DataModels Public Class Account <Key, Display(AutoGenerateField := False)> Public Property ID() As Long <Required, StringLength(30, MinimumLength := 4), Display(Name := "ACCOUNT")> Public Property Name() As String <DataType(DataType.Currency), Display(Name := "AMOUNT")> Public Property Amount() As Decimal Public Overrides Function ToString() As String Return Name & " (" & Amount.ToString("C") & ")" End Function Public Overridable Property Transactions() As ICollection(Of Transaction) End Class End Namespace
類別數(shù)據(jù)模型
C#
using System.ComponentModel.DataAnnotations; namespace MVVMExpenses.DataModels { public class Category { [Key, Display(AutoGenerateField = false)] public long ID { get; set; } [Required, StringLength(30, MinimumLength = 5)] [Display(Name = "CATEGORY")] public string Name { get; set; } [EnumDataType(typeof(TransactionType))] [Display(Name = "TRANSACTION TYPE")] public TransactionType Type { get; set; } public override string ToString() { return Name + " (" + Type.ToString() + ")"; } public virtual ICollection<Transaction> Transactions { get; set; } } }
VB.NET
Namespace MVVMExpenses.DataModels Public Class Category <Key, Display(AutoGenerateField := False)> Public Property ID() As Long <Required, StringLength(30, MinimumLength := 5), Display(Name := "CATEGORY")> Public Property Name() As String <EnumDataType(GetType(TransactionType)), Display(Name := "TRANSACTION TYPE")> Public Property Type() As TransactionType Public Overrides Function ToString() As String Return Name & " (" & Type.ToString() & ")" End Function Public Overridable Property Transactions() As ICollection(Of Transaction) End Class End Namespace
交易數(shù)據(jù)模型
C#
using System.ComponentModel.DataAnnotations; namespace MVVMExpenses.DataModels { public enum TransactionType { Expense, Income } public class Transaction { [Key, Display(AutoGenerateField = false)] public long ID { get; set; } [Display(AutoGenerateField = false)] public long AccountID { get; set; } [Display(Name = "ACCOUNT")] public virtual Account Account { get; set; } [Display(AutoGenerateField = false)] public long CategoryID { get; set; } [Display(Name = "CATEGORY")] public virtual Category Category { get; set; } [DataType(DataType.Date)] [Display(Name = "DATE")] public DateTime Date { get; set; } [DataType(DataType.Currency)] [Display(Name = "AMOUNT")] public decimal Amount { get; set; } [DataType(DataType.MultilineText)] [Display(Name = "COMMENT")] public string Comment { get; set; } } }
VB.NET
Namespace MVVMExpenses.DataModels Public Enum TransactionType Expense Income End Enum Public Class Transaction <Key, Display(AutoGenerateField := False)> Public Property ID() As Long <Display(AutoGenerateField := False)> Public Property AccountID() As Long <Display(Name := "ACCOUNT")> Public Overridable Property Account() As Account <Display(AutoGenerateField := False)> Public Property CategoryID() As Long <Display(Name := "CATEGORY")> Public Overridable Property Category() As Category <DataType(DataType.Date), Display(Name := "DATE")> Public Property [Date]() As Date <DataType(DataType.Currency), Display(Name := "AMOUNT")> Public Property Amount() As Decimal <DataType(DataType.MultilineText), Display(Name := "COMMENT")> Public Property Comment() As String End Class End Namespace
2. 跳轉到Visual Studio 的 Project 菜單并選擇 Manage NuGet Packages...菜單項,在在線存儲中搜索 Entity Framework 6 package,然后單擊 ‘Install’,請注意如果未安裝此 NuGet 包,您將無法在此示例應用程序中使用實體模型。
3. 添加以下 DbContext 類后代,它將用作 DevExpress Scaffolding Wizard 的上下文。
C#
using System.Data.Entity; using MVVMExpenses.DataModels; namespace MVVMExpenses.DataBase { public class MyDbContext : System.Data.Entity.DbContext { static MyDbContext() { System.Data.Entity.Database.SetInitializer<MyDbContext>(null); } public DbSet<Account> Accounts { get; set; } public DbSet<Category> Categories { get; set; } public DbSet<Transaction> Transactions { get; set; } } }
VB.NET
Imports System.Data.Entity Imports MVVMExpenses.DataModels Namespace MVVMExpenses.DataBase Public Class MyDbContext Inherits System.Data.Entity.DbContext Shared Sub New() System.Data.Entity.Database.SetInitializer(Of MyDbContext)(Nothing) End Sub Public Property Accounts() As DbSet(Of Account) Public Property Categories() As DbSet(Of Category) Public Property Transactions() As DbSet(Of Transaction) End Class End Namespace
4. 在繼續(xù)下一步之前,構建您的項目并確保它編譯時沒有錯誤。 然后,在 Visual Studio 解決方案資源管理器中右鍵單擊您的項目并選擇 Add DevExpress Item - Data Model Scaffolding...(參見下圖)。 這將啟動 Scaffolding Wizard,它將生成完整的應用程序層次結構,包括來自數(shù)據(jù)上下文的 MVVM-ready DataModel。
注意:如果缺少此菜單項,請右鍵單擊您的項目并選擇默認的 Visual Studio Add - New Item... 選項。 在對話框中,選擇 DevExpress Template Gallery 并手動啟動 Scaffolding Wizard - 選擇 Data Model Scaffolding 選項卡(WinForms Data Models 組)并單擊右下角的 Run Wizard 按鈕。
在 Wizard 對話框中,選擇在第二步中創(chuàng)建的上下文,然后單擊 Next。 檢查所有必需的表和視圖,然后單擊Finish來啟動模型生成。
5. 結果,您將看到許多新文件、文件夾和類添加到您的應用程序中。
目前,只有向導生成的兩個文件夾值得一提 - 包含您的 CRUD 數(shù)據(jù)模型的 DataModel 文件夾和包含 DbContext 中每個表的 MVVM ViewModel 的 ViewModels 文件夾 - Account、Category 和 Transaction。 在接下來的課程中,您將學習如何為這些 ViewModel 創(chuàng)建 View。
DevExpress WinForm擁有180+組件和UI庫,能為Windows Forms平臺創(chuàng)建具有影響力的業(yè)務解決方案。DevExpress WinForms能完美構建流暢、美觀且易于使用的應用程序,無論是Office風格的界面,還是分析處理大批量的業(yè)務數(shù)據(jù),它都能輕松勝任!
更多產品正版授權詳情及優(yōu)惠,歡迎咨詢
DevExpress技術交流群5:742234706 歡迎一起進群討論
本站文章除注明轉載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網(wǎng)