WPF之ViewModel
写之前我先唠叨两句,现在公司要求用wpf写个客户端,我之前玩过winform,没怎么用wpf写过正经项目,我接手这个wpf项目之后就开始研究这个东西,MVVM,自定义控件,等等。可能是winfrom先入为主的思想,导致了我以为wpf可以按照winfrom的模式来开发,viewmodel,不就是提供数据的吗,可是在我仔细研究之后我发现,mvvm模式开发wpf简直是神器。好了,废话不多说了,下面开始今天的正题。
- 初识wpf的mvvm模式
- model:实体对象(不做过多的解释。)
- View:视图,在wpf中的ui布局。
- ViewModel:视图模型。
- mvvm的好处
- 降低view 层与model层的耦合。
- viewmodel中可以绑定事件。(我刚开始接触wpf的时候,把事件写到视图的.cs文件中,现在想想真是。。。)
/// <summary>
/// 命令
/// </summary>
public ICommand LoadCommand { get; set; }
public LogoViewModel()
{
LoadCommand = new RelayCommand(Click); } private void Click()
{
MessageBox.Show("这是弹出框事件");
}- 双向绑定(数据发生变化后自动通知model该数据发生了变化) 下图的方法用来监听数据是否发生变化,发生变化后会通知用到该数据的地方让他们自己修改。

- mvvm要做什么。
- 大白话说,MVVM框架,要做的最基本的事情就是数据绑定和命令绑定。因为页面UI中会产生大量的事件,因此还需要将事件绑定到MVVM中的命令上。
今天就写到这里,如果小弟写的有什么问题,欢迎各位大牛多多指正。
待续未完。。。 明天会持续更新。
WPF之ViewModel的更多相关文章
- wpf MVVM ViewModel 关闭View显示
上次说到了不同wpf窗体之间的交互,这个在MVVM模式之中用起来会方便很多 下面我来说下在ViewModel中关闭View的方法,其实也很简单的,注释照样不写,一看就懂的 public partial ...
- [WPF] 在 ViewModel 中让数据验证出错(Validation.HasError)的控件获得焦点
1. 需求 在 MVVM 中 ViewModel 和 View 之间的交互通常都是靠 Icommand 和 INotifyPropertyChanged,不过有时候还会需要从 MVVM 中控制 Vie ...
- WPF中viewmodel层怎样得到view层的TabControl控件对象?
View层: <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns: ...
- WPF在ViewModel中绑定按钮点击(CommandBase定义)
定义CommandBase public class CommandBase:ICommand { private readonly Action<object> _commandpara ...
- Wpf ViewModel中 ObservableCollection不支持从调度程序线程以外的线程对其 SourceCollection 进行的更改
Wpf中ViewModel类里面经常会需要用到ObservableCollection来管理列表数据,在做异步通信的时候也会碰到“不支持从调度程序线程以外的线程对其 SourceCollection ...
- winform和wpf里必知的多线程知识
背景: 很多小伙伴经常在群里问线程的问题,平时我经常转一些视频教程这些人不看,我就自己写个总结吧 不过还是要注意的是,切换本来就不能太频繁,要一口气改. wpf的viewmodel就不需要UI线程,更 ...
- wpf中INotifyPropertyChanged的用法
using System;using System.Collections.Generic;using System.ComponentModel;using System.Linq;using Sy ...
- 应用程序框架实战三十四:数据传输对象(DTO)介绍及各类型实体比较
本文将介绍DDD分层架构中广泛使用的数据传输对象Dto,并且与领域实体Entity,查询实体QueryObject,视图实体ViewModel等几种实体进行比较. 领域实体为何不能一统江湖? 当你阅读 ...
- 浅谈 MVVM 设计模式在 Unity3D 中的设计与实施
初识 MVVM 谈起 MVVM 设计模式,可能第一映像你会想到 WPF/Sliverlight,他们提供了的数据绑定(Data Binding),命令(Command)等功能,这让 MVVM 模式得到 ...
随机推荐
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](四)
前言 上一篇<一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](三)>,我们完成了: * 引用SqlSugar * ...
- 学习笔记-使用cmd命令行创建nodejs项目
使用cmd命令行创建nodejs项目 1)在DOS下cd 进入到你想要创建项目的路径. 2)mkdir sing (创建一个sing文件夹) 3)cd sing 4) npm init (初始化工程 ...
- Codeforces 833D Red-black Cobweb【树分治】
D. Red-black Cobweb time limit per test:6 seconds memory limit per test:256 megabytes input:standard ...
- qscoj 128 喵哈哈村的魔法源泉(2)(模仿快速幂,好题)
喵哈哈村的魔法源泉(2) 发布时间: 2017年5月9日 20:59 最后更新: 2017年5月9日 21:00 时间限制: 1000ms 内存限制: 128M 描述 喵哈哈村有一个魔法源 ...
- BZOJ 1800: [Ahoi2009]fly 飞行棋【思维题,n^4大暴力】
1800: [Ahoi2009]fly 飞行棋 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1689 Solved: 1335[Submit][St ...
- 从parcel.js打包出错,到拥抱nvm
去年年底发布的parcel.js在年底可谓是火了一把,短短一个多月的时间在GitHub热门排行榜上名列前茅.因其几乎零配置的易用性,相比Webpack的复杂配置收获了大量关注及好评,甚至有人预言未来大 ...
- vue -- v-cloak解决刷新或者加载出现闪烁(显示变量)
在使用vue绑定数据的时候,渲染页面时会出现变量闪烁,例如 <div class="#app"> <p>{{value.name}}</p> & ...
- JavaScript八张思维导图—字符串用法
JS基本概念 JS操作符 JS基本语句 JS数组用法 Date用法 JS字符串用法 JS编程风格 JS编程实践 不知不觉做前端已经五年多了,无论是从最初的jQuery还是现在火热的Angular,Vu ...
- Spark算子--take、top、takeOrdered
转载请标明出处http://www.cnblogs.com/haozhengfei/p/552e8a32eee9d50fe394dfdcb14c78f3.html take.top.takeOrder ...
- Web应用的目录结构
Web应用的目录结构 |- WebRoot : web应用的根目录 |- 静态资源(html+css+js+image+vedio)|- WEB-INF :固定写法. |-classes: (可选 ...