无废话WPF系列19:MVVM简单介绍
MVVM主要是为了逻辑代码和视图的分离,使CodeBehind只包含对UI的操作。通过绑定和Command来实现
下面我们实现一个最简单的示例,点击按钮使年龄加1.
XAML代码
<Window x:Class="DeepXAML.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:DeepXAML" xmlns:sys="clr-namespace:System;assembly=mscorlib"xmlns:cl="clr-namespace:System.Collections;assembly=mscorlib"Title="MainWindow" Height="250" Width="450"><StackPanel><TextBox Text="{Binding Path=Name}"></TextBox><TextBox Text="{Binding Path=Age}"></TextBox><Button Command="{Binding Path=AddAge}" >Add Age</Button></StackPanel> </Window>
MainPageViewModel
public class MainPageViewModel : INotifyPropertyChanged{public event PropertyChangedEventHandler PropertyChanged;private string name;public string Name {get { return name; }set {name = value;if (this.PropertyChanged != null){this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Name"));}}}private int age;public int Age {get { return age; }set{age = value;if (this.PropertyChanged != null){this.PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Age"));}}}public ICommand AddAge{get { return new AddAgeCommand(this); }}}
public class AddAgeCommand : ICommand{private MainPageViewModel mMainPageViewModel;public AddAgeCommand(MainPageViewModel model){mMainPageViewModel = model;}public bool CanExecute(object parameter){return true;}public event EventHandler CanExecuteChanged;public void Execute(object parameter){this.mMainPageViewModel.Age += 1;}}
我们可以看一下后台只有很少代码:
public partial class MainWindow : Window{public MainWindow(){InitializeComponent();MainPageViewModel mainPageViewModel = new MainPageViewModel { Age = 20, Name = "Jack" };this.DataContext = mainPageViewModel;} }
无废话WPF系列19:MVVM简单介绍相关推荐
- 无废话WPF系列5:控件派生图
1. WPF类控件的派生关系图,紫色的部分开始才算是进入WPF的框架里. 2. WPF控件图 WPF的UI控件主要有以下类型,ContentControl, HeaderedContentContro ...
- WPF自学入门(十一)WPF MVVM模式Command命令 WPF自学入门(十)WPF MVVM简单介绍...
WPF自学入门(十一)WPF MVVM模式Command命令 在WPF自学入门(十)WPF MVVM简单介绍中的示例似乎运行起来没有什么问题,也可以进行更新.但是这并不是我们使用MVVM的正确方式.正 ...
- openresty开发系列10--openresty的简单介绍及安装
openresty开发系列10--openresty的简单介绍及安装 一.Nginx优点 十几年前,互联网没有这么火,软件外包开发,信息化建设,帮助企业做无纸化办公,收银系统,工厂erp,c/s架构偏 ...
- 关于st25系列NFC标签简单介绍及st25TV系列用于门禁读取时的注意事项总结
关于st25系列NFC标签简单介绍及st25TV系列用于门禁读取时的注意事项总结 文章目录 关于st25系列NFC标签简单介绍及st25TV系列用于门禁读取时的注意事项总结 1. 前言 2. ST25 ...
- 无废话WCF系列教程 -- 李林峰
李林峰的无废话WCF入门教程 无废话WCF入门教程一[什么是WCF] 无废话WCF入门教程二[WCF应用的通信过程] 无废话WCF入门教程三[WCF的宿主] 无废话WCF入门教程四[WCF的配置文件] ...
- IPFS技术系列之IPFS简单介绍
前言 随着社会网络的不断发展,当前时代人们对网络资源的渴求越来越大,从文本.图片乃至视频文件.然而在人们的日常使用中,传统的HTTP协议的诟病一一浮现出来,于此同时其他的传输协议也不断兴起,IPF ...
- WPF真入门教程23--MVVM简单介绍
在WPF开发中,经典的编程模式是MVVM,是为WPF量身定做的模式,该模式充分利用了WPF的数据绑定机制,最大限度地降低了Xmal文件和CS文件的耦合度,也就是UI显示和逻辑代码的耦合度,如需要更换界 ...
- 无废话ExtJs 入门教程十七[列表:GridPanel]
无废话ExtJs 入门教程十七[列表:GridPanel] extjs技术交流,欢迎加群(521711109) 在Extjs中,GridPanel用于数据显示,即我们平时说的列表页.在本节中,我们先对 ...
- 无废话ExtJs 入门教程六[按钮:Button]
无废话ExtJs 入门教程六[按钮:Button] extjs技术交流,欢迎加群(201926085) 继上一节内容,我们在表单里加了个两个按钮"提交"与重置.如下所示代码区的第6 ...
最新文章
- 通过 dhcp-agent 访问 Metadata - 每天5分钟玩转 OpenStack(168)
- 关于java包_关于Java包
- linux的系统移植——交叉编译器
- matlab的7.3版本是什么_MX Linux 19.3 发布,Debian和antiX Linux的混合版本
- android测试空指针什么意思,Android神秘的空指针异常
- java 状态模式 重试_java状态模式
- Python Tkinter之variable用法
- 磁珠 符号_如何理解电子元件磁珠?
- linux tar压缩文件命令,linux解压压缩命令tar详解
- 电工知识:常用电子元件名称及其对应图片实用大全
- 南宁刚经历1960年来5月最凉一周 降雨停歇气温将回升
- linux读取ads1115ADC例程
- react全家桶介绍
- 袋鼠云数据中台专栏(一) :浅析数据中台策略与建设实践
- python中pass关键字
- OSChina 周五乱弹 —— 夏日限定梦想
- 面试官:请讲一讲IO流核心模块与基本原理是什么?
- 【C++系列15】c++的正无穷和负无穷
- 如何使用E邮宝的热敏标签纸打印亚马逊外箱单?
- 川大数学系和计算机系,这两所985高校北师大和川大,数学专业是A档,考生该如何选择...