C# CM框架下打造符合MVVM思想的WPF登录窗体
?概述
- 登录窗体无论在bs还是cs中都很常见,使用winform或者wpf ui进行设计都相对比较简单,但是如果在WPF框架,比如:Caliburn.Micro下,设计一个符合MVVM思想的登录窗体就相对有了点难度,因为CM框架本身的设计理念是VM first而非View first.接下来开始讲解我的设计.
后台设计
-
数据模型:定义一个用户登录类,类中囊括三个属性
-
public class UserInformation { public UserInformation() { UserName = "zls20210502"; Password = "123456"; } ///
/// 用户名 /// public string UserName { get; set; } ? ////// 密码 /// public string Password { get; set; } ? ////// 性别 /// public int Gender { get; set; } ? ? }登录信息验证:这里按理应该增加注册信息,应该是个list,我只是举例写了一组:
-
public string ValidateLoginData() { StringBuilder sb = new StringBuilder(); if (UserInformation.UserName == "zls20210502" && UserInformation.Password == "12345678") { sb.Append(""); } else { sb.AppendLine("账号或者密码输入有误,请检查!"); } return sb.ToString(); }
登录方法:这里首先验证登录信息,验证失败就弹窗提示报错信息,否则通过GetView()方法获取当前view并隐藏,然后通过IOC获取IWindowManager,再通过ShowDialog显示主窗体,这几个方法都CM框架集成的方法.登录窗体需要继承Screen.
-
public void BtnLogin() { var str = ValidateLoginData(); if(!string.IsNullOrEmpty(str)) { MessageBox.Show(str); } else { var loginWindow = (Window)this.GetView(); loginWindow.Hide(); ? MainWindowViewModel mainWindowViewModel = new MainWindowViewModel(); IWindowManager windowManager = IoC.Get
(); windowManager.ShowDialog(mainWindowViewModel); this.TryClose(); } ? } 前台设计
-
前台的密码框采用dev下的PasswordBoxEdit,因为wpf自带的PasswordBox的Password不支持绑定:
全部代码如下:
-
-
? 效果演示
-
百度网盘链接:https://pan.baidu.com/s/1lvR7VCJTWI3cD1c0EUIDqA
提取码:
获取方式1:添加小编微信mm1552923,备注:登录;