翻譯|使用教程|編輯:龔雪|2022-04-19 10:30:22.147|閱讀 222 次
概述:本系列內(nèi)容將開始根據(jù)DevExpress WinForms MVVM創(chuàng)建示例應(yīng)用程序,本文繼續(xù)講解如何創(chuàng)建登錄表單。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
從本文檔中,您將了解如何向應(yīng)用程序添加登錄表單。在本節(jié)教程中著重討論了如何實現(xiàn)此任務(wù),這基本上是附加應(yīng)用程序功能的一部分。
1. 您的用戶數(shù)據(jù)庫實現(xiàn)方式可能會有所不同,對于示例應(yīng)用程序,您可以定義以下簡單類:
C#
public class User { public string Login { get; set; } public string Password { get; set; } }
VB.NET
Public Class User Public Property Login() As String Public Property Password() As String End Class
…以及以下存儲用戶憑據(jù)的類。
C#
static class CredentialsSource { static System.Collections.Hashtable credentials; static CredentialsSource() { credentials = new System.Collections.Hashtable(); credentials.Add("Guest", GetHash(null)); credentials.Add("John", GetHash("qwerty")); credentials.Add("Administrator", GetHash("admin")); credentials.Add("Mary", GetHash("12345")); } internal static bool Check(string login, string pwd) { return object.Equals(credentials[login], GetHash(pwd)); } static object GetHash(string password) { return password; } internal static System.Collections.Generic.IEnumerable<string> GetUserNames() { foreach(string item in credentials.Keys) yield return item; } }
VB.NET
Friend NotInheritable Class CredentialsSource Private Sub New() End Sub Private Shared credentials As System.Collections.Hashtable Shared Sub New() credentials = New System.Collections.Hashtable() credentials.Add("Guest", GetHash(Nothing)) credentials.Add("John", GetHash("qwerty")) credentials.Add("Administrator", GetHash("admin")) credentials.Add("Mary", GetHash("12345")) End Sub Friend Shared Function Check(ByVal login As String, ByVal pwd As String) As Boolean Return Object.Equals(credentials(login), GetHash(pwd)) End Function Private Shared Function GetHash(ByVal password As String) As Object Return password End Function Friend Shared Iterator Function GetUserNames() As System.Collections.Generic.IEnumerable(Of String) For Each item As String In credentials.Keys Yield item Next item End Function End Class
2. 使用 DataLayoutControl 創(chuàng)建一個 LoginView 用戶控件,就像使用詳細(xì)視圖一樣。 不要忘記將數(shù)據(jù)綁定的 DataSourceUpdateMode 設(shè)置為 OnPropertyChanged,否則按“Enter”鍵將傳遞一個空密碼,因為編輯器仍處于焦點狀態(tài)。 要提高登錄表單的可用性,請使用編輯器的智能標(biāo)簽將顯示用戶名的編輯器類型更改為 LookUpEdit。
3. 對于本次登錄View相關(guān)的ViewModel,可以使用Scaffolding Wizard生成或者手動實現(xiàn),以下代碼說明了最簡單的 LoginViewModel 實現(xiàn)。
C#
using System.Collections.Generic; using DevExpress.Mvvm.POCO; using MVVMExpenses.Models; public class LoginViewModel { public IEnumerable<string> LookUpUsers { get { return CredentialsSource.GetUserNames(); } } public virtual User CurrentUser { get; set; } public bool IsCurrentUserCredentialsValid { get; private set; } // [DevExpress.Mvvm.DataAnnotations.Command(false)] public void Init() { this.CurrentUser = new User(); } public void Update() { IsCurrentUserCredentialsValid = CredentialsSource.Check(CurrentUser.Login, CurrentUser.Password); } public static LoginViewModel Create() { return ViewModelSource.Create<LoginViewModel>(); } }
VB.NET
Imports System.Collections.Generic Imports DevExpress.Mvvm.POCO Imports MVVMExpenses.Models Public Class LoginViewModel Public ReadOnly Property LookUpUsers() As IEnumerable(Of String) Get Return CredentialsSource.GetUserNames() End Get End Property Public Overridable Property CurrentUser() As User Private privateIsCurrentUserCredentialsValid As Boolean Public Property IsCurrentUserCredentialsValid() As Boolean Get Return privateIsCurrentUserCredentialsValid End Get Private Set(ByVal value As Boolean) privateIsCurrentUserCredentialsValid = value End Set End Property ' <DevExpress.Mvvm.DataAnnotations.Command(False)> Public Sub Init() Me.CurrentUser = New User() End Sub Public Sub Update() IsCurrentUserCredentialsValid = CredentialsSource.Check(CurrentUser.Login, CurrentUser.Password) End Sub Public Shared Function Create() As LoginViewModel Return ViewModelSource.Create(Of LoginViewModel)() End Function End Class
在此 ViewModel 中,定義了兩個屬性:存儲當(dāng)前登錄用戶的 CurrentUser 屬性和指定輸入憑據(jù)是否已通過驗證的布爾值 IsCurrentUserCredentialsValid 屬性。
DevExpress WinForm擁有180+組件和UI庫,能為Windows Forms平臺創(chuàng)建具有影響力的業(yè)務(wù)解決方案。DevExpress WinForms能完美構(gòu)建流暢、美觀且易于使用的應(yīng)用程序,無論是Office風(fēng)格的界面,還是分析處理大批量的業(yè)務(wù)數(shù)據(jù),它都能輕松勝任!
更多產(chǎn)品正版授權(quán)詳情及優(yōu)惠,歡迎咨詢
DevExpress技術(shù)交流群6:600715373 歡迎一起進(jìn)群討論
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自:慧都網(wǎng)