C#WPF实战出真汁04--登录功能实现

1、登录功能实现要点

对于登录系统,应该注意几个要点:用户认证流程设计,密码存储与验证,会话管理,防暴力破解措施,错误处理与提示

2、登录功能的视图模型

首先在xaml文件中必须指定该页面使用的视图模型,即viewmodel,ViewModel是WPF中MVVM模式的核心,负责管理数据和交互逻辑。通过实现INotifyPropertyChanged和ICommand接口,可以轻松实现数据绑定和命令绑定。使用MVVM框架可以进一步简化开发流程。ViewModel的主要职责是封装业务逻辑和数据状态,为View提供数据绑定和命令绑定的接口。它不直接依赖View,而是通过数据绑定机制与View交互,从而实现松耦合。

定义ViewModel类 ViewModel通常是一个普通的C#类,需要实现INotifyPropertyChanged接口以支持数据绑定通知,ViewModel还可以处理用户交互逻辑,通常通过ICommand接口实现

完整代码如下:

using HQ.BLL;
using HQ.COMM;
using HQ.fResApp.BaseModel;
using HQ.fResApp.Utils;
using HQ.MODEL.UIModel;
using Panuon.UI.Silver;
using Panuon.UI.Silver.Core;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;namespace HQ.fResApp.ViewModel
{public class LoginVModel:ViewModelBase{UserBLL userBLL=new UserBLL();LoginUser userInfo;public LoginVModel(){userInfo = new LoginUser();}/// <summary>/// 帐号Id/// </summary>public string UserId{get { return userInfo.uGuid; }set{userInfo.uGuid = value;OnPropertyChanged();}} /// <summary>/// 密码/// </summary>public string UserPwd{get { return userInfo.uPwd; }set{userInfo.uPwd = value;OnPropertyChanged();}}/// <summary>/// 登录按钮的命令处理/// </summary>public ICommand LoginCommand{get{return new RelayCommand(o =>{var handler = PendingBox.Show("正在登录中,请稍等...", "", false, null,new PendingBoxConfigurations(){LoadingForeground = "#5DBBEC".ToColor().ToBrush(),ButtonBrush = "#5DBBEC".ToColor().ToBrush(),LoadingSize = 50,PendingBoxStyle = PendingBoxStyle.Classic,FontSize = 15});var _name = "13166258391";var _pwd = "13166258391";if (!string.IsNullOrEmpty(_name) && !string.IsNullOrEmpty(_pwd)){ var _uobj = new LoginUser { uName = _name, uPwd = _pwd };var _res = userBLL.LoginAsync(_uobj).Result;if (_res.statusCode != (int)ApiEnum.Status){handler.Close();Notice.Show("登录失败,请核实您的登录信息!", "提示", 3, MessageBoxIcon.Info);Logger.Default.ProcessError((int)ApiEnum.Error, "登录失败-->账号【" + _name + "】密钥【" + _pwd + "】。");return;}else{var _uobjinfo = _res.data;if (_uobjinfo == null){handler.Close();Notice.Show("登录失败,请核实您的登录信息!", "提示", 3, MessageBoxIcon.Info);Logger.Default.ProcessError((int)ApiEnum.Error, "登录信息不存在数据库中-->账号【" + _name + "】密钥【" + _pwd + "】。");return;}MainWindow mainWindow = new MainWindow();mainWindow.Show();handler.Close();WindowManager.CloseWindow("loginWindow", o);//关闭登录页}}else{Notice.Show("请确认您的登录信息输入是否完整!", "提示", 3, MessageBoxIcon.Info);return;}});}}}
}

3、登录过程 

原创不易,打字截图不易,走过路过,不要错过,欢迎点赞,收藏,转载,复制,抄袭,留言,动动你的金手指,早日实现财务自由!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/96001.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/96001.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙入门简化版

第一步&#xff1a; 首先下载DEVStudio https://developer.huawei.com/consumer/cn/deveco-studio/ 第二步&#xff1a; 了解基本的ArkTs语言 https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/introduction-to-arkts 第三步 &#xff1a; 教学视频有两个途径&a…

day25|学习前端js

函数声明&#xff0c;被提升&#xff08;hoisting&#xff09;。函数表达式必须先定义才能用。对象解构&#xff0c;按属性名数组解构按顺序点运算符. 对象.属性名哪些可迭代&#xff08;可以被for..of循环的东西&#xff09;&#xff1a;array&#xff0c;string&#xff0c;m…

quic协议与应用开发

quic为什么出现&#xff1f;quic主要是为了解决TCP协议的局限性而提出的&#xff0c;具体来说是要解决如下问题&#xff1a;1. 加密连接建立时间长TCP协议是传输层协议&#xff0c;而TLS是会话层协议&#xff0c;在Linux等主流操作系统中TCP在内核实现而TLS一般在用户态实现&am…

【浅学】tflite-micro + ESP32S3 + VScode + ESP-IDF 基于例程快速实现自己的图像分类模型训练部署全流程

如果你用Pytorch训练的模型那么可以参考我的步骤&#xff0c;使用的是Tensorflow的话参考官方文档即可&#xff0c;但流程都是一样的&#xff0c;每一步我都会提到部分操作细节及注意事项 官方教程 要详细学习的话tflite-micro里的微控制器章节下都详细看&#xff08;页面左侧…

【HarmonyOS】应用设置全屏和安全区域详解

【HarmonyOS】应用设置全屏和安全区域详解 一、前言 IDE创建的鸿蒙应用&#xff0c;默认采取组件安全区布局方案。顶部会预留状态栏区域&#xff0c;底部会预留导航条区域。这就是所谓的安全区域。 如果不处理&#xff0c;界面效果很割裂。所以业内UI交互设计&#xff0c;都会设…

openfeign 只有接口如何创建bean的

OpenFeign 能够为纯接口创建 Spring Bean&#xff0c;其核心机制是通过动态代理和 Spring 的 FactoryBean 机制实现的。以下是详细的工作原理&#xff1a;1. EnableFeignClients 注解的启动在 Spring Boot 主类上添加 EnableFeignClients 注解&#xff1a;SpringBootApplicatio…

【展厅多媒体】互动地砖屏怎么提升展厅互动感的?

在数字化展厅设计中&#xff0c;互动地砖屏 正成为提升观众参与度的重要工具。这种融合视觉科技与交互体验的装置&#xff0c;通过动态影像与即时反馈&#xff0c;让参观者从被动观看转变为主动探索&#xff0c;从而大幅增强展厅的互动感。 Led地面互动屏的优势在于其强大的视…

AI赋能电力巡检:变压器漏油智能检测系统全解析

&#x1f525; AI赋能电力巡检&#xff1a;变压器漏油智能检测系统全解析 &#x1f4d6; 前言 在电力系统的日常运维中&#xff0c;变压器作为核心设备&#xff0c;其安全运行直接关系到整个电网的稳定性。传统的人工巡检方式不仅效率低下&#xff0c;还存在安全隐患和漏检风险…

GitHub上值得Star的计算机视觉项目

GitHub上值得Star的计算机视觉项目 前言 一、OpenCV:计算机视觉领域的瑞士军刀 1.1 项目简介 1.2 核心功能与技术特点 1.3 代码示例 二、YOLO 系列:实时目标检测的领导者 2.1 项目简介 2.2 核心功能与技术特点 2.3 代码示例 三、Detectron2:Facebook AI Research 的目标检测…

【深度学习】pytorch深度学习框架的环境配置

文章目录1. 配置cuda环境2. 配置conda环境3. 配置pytorch gpu环境1. 配置cuda环境 在命令行输入以下命令可以查看当前显卡驱动版本和最高支持的cuda版本 nvidia-smi根据cuda版本去官网下载并安装cuda 下载链接&#xff1a;https://developer.nvidia.com/cuda-toolkit-archive…

数据处理与统计分析 —— 房源数据集分析案例

数据集网盘下载&#xff1a; 链接&#xff1a;https://pan.quark.cn/s/0e577858dba3?pwdFJnb 提取码&#xff1a;FJnb代码仅供参考具体可打开ipynb文件进行学习和练习&#xff1a;链接&#xff1a;https://pan.quark.cn/s/8efbe3061fad?pwdT47B 提取码&#xff1a;T47Bimport…

蓝牙如何测试?

车载蓝牙测试需覆盖 连接稳定性、功能完整性、兼容性、交互体验等核心维度,结合车载场景的特殊性(如行驶中信号干扰、多设备交互、安全需求),具体测试点如下: 一、基础配对与连接测试 1. 首次配对 触发配对:车机端 “蓝牙设置” 中搜索设备、手机端搜索车机(车机名称是…

算法02 二进制与位运算

二进制作为计算机底层数据的核心表示方式&#xff0c;其独特的位结构和运算规则在算法设计中有着广泛且关键的应用。以下从基础操作、算法技巧、数据结构、经典问题等多个维度&#xff0c;全面梳理二进制在算法中的应用&#xff1a; 一、基础位运算&#xff1a;算法的“原子操作…

PAT 1071 Speech Patterns

题目大意是说给出一个文本&#xff0c;找出里面出现最多的单词&#xff0c;如果有多个单词出现次数一样多&#xff0c;则输出字典序最小的。 需要注意的是&#xff1a; 给出的文本字符串不仅有数字还有字母&#xff0c;还有一些特殊的字符&#xff0c;还有空格。 而单词是只包含…

CSS中的 :root 伪类

在CSS中&#xff0c;伪类是一种用于选择元素特定状态的选择器。:root 伪类专门用于选择文档的根元素&#xff08;在HTML中通常是<html>元素&#xff09;&#xff0c;它是CSS变量&#xff08;Custom Properties&#xff09;的理想载体&#xff0c;常用于定义全局样式变量&…

能源行业数字化转型:边缘计算网关在油田场景的深度应用

能源行业数字化转型&#xff1a;边缘计算网关在油田场景的深度应用能源行业是国民经济的支柱产业&#xff0c;而油田作为能源生产的重要基地&#xff0c;其数字化转型对于提高生产效率、降低能耗、减少碳排放具有重要意义。然而&#xff0c;油田往往地处偏远&#xff0c;油井分…

CAG缓存增强生成与RAG检索增强生成对比

深度定制 LLM 知识,除了 RAC &#xff0c;现在又有新技术假设有一份200页的产品手册,你想让 LLM 准确回答里面的相关问题,要实现这个目标,除了常用的检索增强生成技术 rep ,现在有了新思路,缓存增强生成 CAG &#xff0c;它是什么,何时使用.RAG检索增强是常规套路,CAG缓存增强是…

基于vue、node.js、express的网络教学系统设计与实现/基于vue、node.js、express的在线学习系统设计与实现

基于vue、node.js、express的网络教学系统设计与实现/基于vue、node.js、express的在线学习系统设计与实现

享元模式引发的关于ECS和对象池的思考记录

文章目录概念概述解决了什么区别与联系享元模式的某个例子的细节分析概念概述 ECS&#xff08;Entity-Component-System&#xff09; 1、Entity&#xff08;实体&#xff09;&#xff1a;唯一标识符。 2、Component&#xff08;组件&#xff09;&#xff1a;纯数据容器&#x…

STM32驱动SG90舵机全解析:从PWM原理到多舵机协同控制

一、SG90舵机核心特性 1.1 基本参数与选型 SG90作为​​微型舵机的代表​​,凭借其​​轻量化设计​​(仅9g)和​​高性价比​​,在机器人、智能小车和云台系统中广泛应用: ​​关键参数对比​​: ​​参数​​ 180定位舵机 360连续旋转舵机 ​​控制目标​​ 精确…