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不支持绑定:

全部代码如下:


    
        
            
            
            
            
        
        
        
        


        
        
            
                
            
        
        
        
            
                
            
        


        
    

效果演示

源码提取

项目下载下来先还原包,得联网的奥,确保引用的地方没有黄色感叹号,此项目还引用了几个dev的库,确保dev已经安装。

百度网盘下载链接:

https://pan.baidu.com/s/13-qYKaK0AeTVKg-FQrpcaw

提取码:0000

技术群:添加小编微信并备注进群

小编微信:mm1552923   

公众号:dotNet编程大全    

你可能感兴趣的:(java,python,wpf,c#,jwt)