WPF MVVM第一篇-MVVM框架搭建

news/2024/10/7 11:33:19/文章来源:https://www.cnblogs.com/Net191111/p/18449854

1.创建view界面

<Window x:Class="WpfFramework.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfFramework"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<Label Content="参数" HorizontalAlignment="Left" Margin="210,123,0,0" VerticalAlignment="Top"/>
<Label Content="密码" HorizontalAlignment="Left" Margin="210,93,0,0" VerticalAlignment="Top"/>
<Label Content="账号" HorizontalAlignment="Left" Margin="210,63,0,0" VerticalAlignment="Top"/>
<TextBox HorizontalAlignment="Left" Margin="272,97,0,0" TextWrapping="Wrap" Text= "{Binding Mima}" VerticalAlignment="Top" Width="120"/>
<TextBox HorizontalAlignment="Left" Margin="272,67,0,0" TextWrapping="Wrap" Text="{Binding ZhangHao}" VerticalAlignment="Top" Width="120"/>
<TextBox HorizontalAlignment="Left" Margin="272,127,0,0" TextWrapping="Wrap" Name="test" VerticalAlignment="Top" Width="120"/>
<Button Content="登录" HorizontalAlignment="Left" Margin="272,161,0,0" VerticalAlignment="Top" Command="{Binding LoginAction}"/>
<Button Content="保存" HorizontalAlignment="Left" Margin="245,220,0,0" VerticalAlignment="Top" Width="180"/>
</Grid>
</Window>

2.创建监听文件

public class NotificationObject:INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public void RaisePropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}

---------------------------

public class ICommandClass:ICommand
{
readonly Func<bool> _CanExecute;
readonly Action _Execute;
public ICommandClass(Action action,Func<bool> func)
{
_Execute = action;
_CanExecute = func;
}
public bool CanExecute(object parameter)
{
return _CanExecute != null;
}
public void Execute(object parameter)
{
_Execute();
}
public event EventHandler CanExecuteChanged
{
add
{
if (_CanExecute != null)
{
CommandManager.RequerySuggested += value;
}
}
remove
{
if (_CanExecute != null)
{
CommandManager.RequerySuggested -= value;
}
}
}
}

3.创建model

public class ModelClass
{
public string _Name;
public string _Age;
public string _ZhangHao;
public string _Mima;
public string Name
{
get { return _Name; }
set { _Name = value; }
}
public string Age
{ get { return _Age; } set { _Age = value; } }
public string ZhangHao
{ get { return _ZhangHao; } set { _ZhangHao = value; } }
public string Mima
{ get { return _Mima; }set { _Mima = value; } }
}

4.创建viewmodel并绑定view与model

public class ViewModelClass : NotificationObject
{
private ModelClass _model;
private MainWindow _mainWindow;
public ViewModelClass(MainWindow mainWindow)
{
_mainWindow = mainWindow;
_model = new ModelClass();
}
public string ZhangHao
{
get { return _model.ZhangHao; }
set { _model.ZhangHao = value; RaisePropertyChanged("ZhangHao"); }
}
public string Mima
{
get { return _model.Mima; }
set { _model.Mima = value; RaisePropertyChanged("Mima"); }
}
public void LogionFunc()
{
if (ZhangHao == "wpf" && Mima == "666")
{
MessageBox.Show("登录成功");
}
else
{
MessageBox.Show("输入的用户名密码不正确");
ZhangHao = "";
Mima = "";
}
}
public bool CanExecute()
{
return true;
}
public ICommand LoginAction
{
get { return new ICommandClass(LogionFunc, CanExecute); }
}
}

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

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

相关文章

电表行业强力推荐KY8023S6对标平替BL8023双向继电器驱动芯片

双向继电器驱动芯片KY8023S6对标平替BL8023。 产品特点 SOT23-6L和SOP-8 两种封装 静态功耗电流<1uA 输入高低转换电平为1.3V(Is=1A)左右,兼容多种单片机 工作电压5-40V,推荐工作电压5-30V 输入INA和INB端自带115k下拉电阻,一般可省略外围下拉电阻 集成高速续流二极管,…

重启后,idea 依赖爆红

没改动代码,但无法运行java项目 java: -source 1.5 中不支持……表达式/运算符java: 错误: 不支持发行版本 5解决:https://www.cnblogs.com/liu-han/p/16105953.html 文件→项目结构,SDK和项目/模块 语言级别的版本要一致SDK: 1.8 项目语言级别:SDK默认值 模块语言级别:SD…

[亲测]君临九州+单机安装教程+无需虚拟机+GM后台

今天给大家带来一款单机游戏的架设:君临九州,版本号:1.0.12.30。 另外:本人承接各种游戏架设(单机+联网) 本人为了学习和研究软件内含的设计思想和原理,带了架设教程仅供娱乐。 教程是本人亲自搭建成功的,绝对是完整可运行的,踩过的坑都给你们填上了。如果你是小白也没…

智慧园区管理系统原型

智慧园区管理系统的构建是一个复杂而系统的工程,它融合了信息化、AI、物联网等多种先进技术,旨在提升园区的管理效率、服务质量以及企业运营效率。 一、明确系统目标和需求 需求收集与分析:首先,需要对园区的实际需求进行全面分析,包括园区类型(如产业园区、办公园区、住…

POI导出excel文件加水印

百分百能用,我用的POI版本是5.2.3,效果如下import lombok.extern.slf4j.Slf4j; import org.apache.poi.openxml4j.opc.PackagePartName; import org.apache.poi.openxml4j.opc.PackageRelationship; import org.apache.poi.openxml4j.opc.TargetMode; import org.apache.poi.xs…

FredNormer: 非平稳时间序列预测的频域正则化方法

时间序列预测是一个具有挑战性的任务,尤其是在处理非平稳数据时。现有的基于正则化的方法虽然在解决分布偏移问题上取得了一定成功但仍存在局限性。这些方法主要在时间域进行操作,可能无法充分捕捉在频域中更明显的动态模式,从而导致次优的结果。 FredNormer论文的研究目的主要…

江苏省第二届数据安全技术应用职业技能竞赛初赛WP

一、数据安全解题赛1、ds_0602解题思路题目让我们获取加密文件中的原始数据,解密后提交第六行第二列数据,下载附件,发现里面有两个文件,其中一个是“.enc”结尾,那这里我们得先简单了解一下“.enc”结尾的是什么类型的文件。简单来说“.enc”结尾的文件通常是经过加密的文…

java之使用CompletableFuture入门2

Java 17 -序章 本文介绍用过的 allOf、anyOf 函数的用法。allOf 函数原型两点: 1、没有返回值。 2、参数 cfs 中 任何一个 都不能是 null。anyOf 函数原型两点: 1、有返回值,为 Object。 2、参数 cfs 中 任何一个 都不能是 null。allOf 测试意图: 多个任务正常执行。ben发布…

VMware Aria Operations for Logs 8.18 发布,新增功能概览

VMware Aria Operations for Logs 8.18 发布,新增功能概览VMware Aria Operations for Logs 8.18 - 集中式日志管理 请访问原文链接:https://sysin.org/blog/vmware-aria-operations-for-logs/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org集中式日志管理 V…

VMware Aria Operations for Networks 6.13 发布,新增功能概览

VMware Aria Operations for Networks 6.13 发布,新增功能概览VMware Aria Operations for Networks 6.13 - 网络和应用监控工具 请访问原文链接:https://sysin.org/blog/vmware-aria-operations-for-networks/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org…

读数据工程之道:设计和构建健壮的数据系统01数据工程概述

数据工程概述1. 数据工程 1.1. 自从公司开始使用数据做事,数据工程就以某种形式存在了1.1.1. 预测性分析、描述性分析和报告1.2. 数据工程师获取数据、存储数据,并准备数据供数据科学家、分析师和其他人使用 1.3. 数据工程是系统和流程的开发、实施和维护,这些系统和流程接收…

安装socks5的一次尝试

1. 下载并自动配置socks5sudo wget https://ap-guangzhou-1257892306.cos.ap-guangzhou.myqcloud.com/asi/httpsocks5.sh && sh httpsocks5.sh 执行下载脚本 wget —no-check-certificate https://raw.github.com/Lozy/danted/master/install.sh -O install.sh执行安装…