上次说到了不同wpf窗体之间的交互,这个在MVVM模式之中用起来会方便很多 下面我来说下在ViewModel中关闭View的方法,其实也很简单的,注释照样不写,一看就懂的 public partial class aaa: Window { public aaa() { InitializeComponent(); this.DataContext=new aaaModel(this.close); } } public class aaaModel { Action _CloseView; a…
写之前我先唠叨两句,现在公司要求用wpf写个客户端,我之前玩过winform,没怎么用wpf写过正经项目,我接手这个wpf项目之后就开始研究这个东西,MVVM,自定义控件,等等.可能是winfrom先入为主的思想,导致了我以为wpf可以按照winfrom的模式来开发,viewmodel,不就是提供数据的吗,可是在我仔细研究之后我发现,mvvm模式开发wpf简直是神器.好了,废话不多说了,下面开始今天的正题. 初识wpf的mvvm模式 model:实体对象(不做过多的解释.) View:视图,在w…
1. 需求 在 MVVM 中 ViewModel 和 View 之间的交互通常都是靠 Icommand 和 INotifyPropertyChanged,不过有时候还会需要从 MVVM 中控制 View 中的某个元素,让它获得焦点,例如这样: 上面的 gif 是我在另一篇文章 <自定义一个"传统"的 Validation.ErrorTemplate> 中的一个示例,在这个示例中我修改了 Validation.ErrorTemplate,这样在数据验证出错后,相关的控件会显示…
View层: <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" ....  cal:Message.Attach="[Event Loaded]=[Action WindowLoaded(A.Tag)]">   .... <…
昨天在工作中新建了一个Model类在测试环境测试一点问题也没有,到了生产环境就报错了,由于调用的是分页类,报错说:在520行 _count() 函数不存在. 我的思路是:先到生产环境查看了具体的报错文件,发现520行 _count() 函数存在,把runtime清理了还是不行:下一步是查看Model类文件的权限,发现是644,而其他Model类的权限都是664,修改为664就OK了. 如果您阅读过此文章有所收获,请为我顶一个,如果文章中有错误的地方,欢迎指出. 相互学习,共同进步!…
定义CommandBase public class CommandBase:ICommand { private readonly Action<object> _commandpara; private readonly Action _command; private readonly Func<bool> _canExecute; public CommandBase(Action command, Func<bool> canExecute=null) { i…
前言你前提应该懂下面基础知识:下载node.js 下好后自带npm 命令 终端查看命令 npm -v 即可看到安装版本安装淘宝镜像:npm install -g cnpm --registry=https://registry.npm.taobao.org npm init 在项目中引导创建一个package.json文件   常用 npm init -y 直接自动生成 npm config 管理npm的配置路径npm config set <key> <value> [-g|--…
初始化css ,如设置body的margin,padding值,button:hover的pointer手型,li dd的list-style,a的下划线等. 最好将常用的初始化css文件整合在一起,方便日后直接使用. 给html,body设置height:100%(很重要),最好给body设置个背景色.…
Wpf中ViewModel类里面经常会需要用到ObservableCollection来管理列表数据,在做异步通信的时候也会碰到“不支持从调度程序线程以外的线程对其 SourceCollection 进行的更改”这样的异常,解决方法如下 ThreadPool.QueueUserWorkItem(delegate { System.Threading.SynchronizationContext.SetSynchronizationContext(new System.Windows.Thread…
不外乎两种基本方法. 消息通知和参数传递. 一.消息通知 利用View里的IsEnable属性 原理是这样的: 1.UI中的IsEnabled绑定VM中的属性 2.UI的后台代码中,注册IsEnableChange事件,在这个事件里,检测到传过来的值满足某个条件,即可触发Close()命令 如此,VM控制自己那个属性就能达到关闭V的目的了. 二.参数传递. 根据参数传递的不同.分为传递函数和传递View对象. 1传递函数 该方法:需要三步. 1.重写ViewModel的构造函数 public P…