翻譯|使用教程|編輯:龔雪|2022-04-19 10:30:22.147|閱讀 222 次
概述:本系列內容將開始根據DevExpress WinForms MVVM創建示例應用程序,本文繼續講解如何創建登錄表單。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
從本文檔中,您將了解如何向應用程序添加登錄表單。在本節教程中著重討論了如何實現此任務,這基本上是附加應用程序功能的一部分。
1. 您的用戶數據庫實現方式可能會有所不同,對于示例應用程序,您可以定義以下簡單類:
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
…以及以下存儲用戶憑據的類。
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 創建一個 LoginView 用戶控件,就像使用詳細視圖一樣。 不要忘記將數據綁定的 DataSourceUpdateMode 設置為 OnPropertyChanged,否則按“Enter”鍵將傳遞一個空密碼,因為編輯器仍處于焦點狀態。 要提高登錄表單的可用性,請使用編輯器的智能標簽將顯示用戶名的編輯器類型更改為 LookUpEdit。
3. 對于本次登錄View相關的ViewModel,可以使用Scaffolding Wizard生成或者手動實現,以下代碼說明了最簡單的 LoginViewModel 實現。
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 中,定義了兩個屬性:存儲當前登錄用戶的 CurrentUser 屬性和指定輸入憑據是否已通過驗證的布爾值 IsCurrentUserCredentialsValid 屬性。
DevExpress WinForm擁有180+組件和UI庫,能為Windows Forms平臺創建具有影響力的業務解決方案。DevExpress WinForms能完美構建流暢、美觀且易于使用的應用程序,無論是Office風格的界面,還是分析處理大批量的業務數據,它都能輕松勝任!
更多產品正版授權詳情及優惠,歡迎咨詢
DevExpress技術交流群6:600715373 歡迎一起進群討論
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都網