ContentControl 与 ViewModel (二)】的更多相关文章

前阵子有人问我MVVM模式下,在View中嵌套View,切换View.想一想还是写下来吧. 主要就是用到 ContentControl 和 DataTemplate,这算是一种 ViewModel First 的思想吧. 其实好多MVVM的框架,也都提供这样的功能.在ContentControl绑定ViewModel,就可以显示 对应的View.比如 Caliburn.Micro(CM框架). MVVMLight应该是没有提供的,对他我本身不是很熟,以前知道他很轻,看过原码,真心没有多少,最近在…
上文说到 可以使用DataTemplateSelector. 其实等于是用 DataTemplateSelector + 动态创建DataTemplate来实现. using System; using System.Collections.Generic; using System.Windows; using System.Windows.Controls; using System.Windows.Markup; namespace ContentDemo { class ContentD…
第1章 课程导语介绍课程的内容1-1 开宗明义 试看1-2 课程维护与提问 第2章 Flask的基本原理与核心知识本章我们首先介绍Python官方推荐的最佳包与虚拟环境管理工具:Pipenv.接着我们来学习唯一URL原则.重定向.响应对象Response.2-1 鱼书是一个什么样的产品 试看2-2 准备工作 试看2-3 使用官方推荐的pipenv创建虚拟环境(很好用哦~)2-4 开发工具推荐2-5 设置开发工具的默认解释器2-6 flask最小原型与唯一URL原则2-7 路由的另一种注册方法2-…
问题:自定义控件的依赖项属性和VIewModel中的变量不能双向绑定 解决思路:对比.net源码 PresentationFramework  /   System.Windows.Controls 原因:定义依赖项属性时没有设置OnChanged方法 解决方法:初始化时绑定Changed方法 .net 源码如下: /// <summary> /// The DependencyProperty for the Content property. /// Flags: None /// Def…
以前的做法: 1.当项目的时间比较紧迫的时候,对UI层中控件的事件的处理,往往采取的是类似Winform中最简单的做法,直接做一个事件的Handler直接去调用VM层的方法. 2.控件只有一个Command属性,其它的事件的处理方法没有办法和ViewModel层进行解耦的时候往往也采取上面提到的方法. 如下图所示: 新的做法: 为了实现事件的处理与View层的解耦,我们可以利用WPF提供的附加属性来为需要的事件添加附加行为.附加属性扮演了一个在View层与Model层牵线的角色. 需要下面三个步…
在我们按照(一)中的步骤,安装好MMVLight的环境后, 会多出一个文件夹ViewModel,里面有两个.cs文件MainViewModel.cs和ViewModelLocator.cs MainViewModel.cs文件:是MainWindow.xaml(这个文件就是View,我们以后再起名字的时候,都是以View结尾)的ViewModel文件. ViewModelLocator.cs文件:是负责关联View和ViewModel的cs文件.在我们的项目中,已经把ViewModelLocat…
计算属性 实际应用中,我们通常需要对数据进行加工 如: 指定日期格式,将数字相加... 等,此时可使用ko.computed().当数据发生改变是,KO会使用computed重新计算 DEMO1 更改firstName,lastName值后改变fullName var AppViewModel = function() { var me = this; me.firstName = ko.observable('Bob'); me.lastName = ko.observable('Smith'…
MVVM模式解析和在WPF中的实现(六) 用依赖注入的方式配置ViewModel并注册消息 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中的实现(三)命令绑定 MVVM模式解析和在WPF中的实现(四)事件绑定 MVVM模式解析和在WPF中的实现(五)View和ViewModel的通信 MVVM模式解析和在WPF中的实现(六)用依赖注入的方式配置ViewModel并注册消息 0x00 最初的想法…
MVVM模式解析和在WPF中的实现(五) View和ViewModel的通信 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中的实现(三)命令绑定 MVVM模式解析和在WPF中的实现(四)事件绑定 MVVM模式解析和在WPF中的实现(五)View和ViewModel的通信 MVVM模式解析和在WPF中的实现(六)用依赖注入的方式配置ViewModel并注册消息 0x00 还需要些什么呢 在前面几篇…
MVVM模式解析和在WPF中的实现(二) 数据绑定 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在WPF中的实现(三)命令绑定 MVVM模式解析和在WPF中的实现(四)事件绑定 MVVM模式解析和在WPF中的实现(五)View和ViewModel的通信 MVVM模式解析和在WPF中的实现(六)用依赖注入的方式配置ViewModel并注册消息 0x00 数据绑定要达到的效果 数据绑定要达到什么效果呢,就是…
ASP.NET MVC 视图(二) 前言 上篇中对于视图引擎只是做了简单的演示,对于真正的理解视图引擎的工作过程可能还有点模糊,本篇将会对由MVC框架提供给我们的Razor视图引擎的整个执行过程做一个粗略的讲解,目的在于让大家对Razor视图引擎的执行过程留个印象以便联想的思考到视图引擎的作用以及视图在MVC框架中的表示. ASP.NET MVC 视图 自定义视图引擎 Razor视图引擎执行过程 Razor视图的依赖注入.自定义视图辅助器 分段.分部视图的使用 Razor语法.视图辅助器 Raz…
ASP.NET MVC Model绑定(二) 前言 上篇对于Model绑定的简单演示想必大家对Model绑定的使用方式有一点的了解,那大家有没有想过Model绑定器是在什么时候执行的?又或是执行的过程是什么样的?将在本篇为大家解除这些疑惑,在其中涉及到的一些描述类型和上下文参数会在后续的篇幅中讲到. Model绑定 IModelBinder.自定义Model绑定器简单实现 Model绑定器在MVC框架中的位置 MVC中的默认Model绑定器生成过程 IModelBinderProvider的简单…
前言:之前博主分享过knockoutJS和BootstrapTable的一些基础用法,都是写基础应用,根本谈不上封装,仅仅是避免了html控件的取值和赋值,远远没有将MVVM的精妙展现出来.最近项目打算正式将ko用起来,于是乎对ko和bootstraptable做了一些封装,在此分享出来供园友们参考.封装思路参考博客园大神萧秦,如果园友们有更好的方法,欢迎讨论. KnockoutJS系列文章: JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(一) JS组件…
需求描述 一个比较复杂的页面,界面中包含的元素数据来自于许多个有关联或者无关联的表,然后我们要做的就是将数据呈现在界面上. 10年前大概都是这么干的 直接写一个复杂的SQL语句,返回一个包含所需数据的二维表,然后直接与界面开始绑定. 简单.粗暴. 今天的现状 信息化解决方案的普及,我们接到的企业应用项目很多都是在旧系统无法满足需要的情况下扩展,业务功能也将建立在原来的基础上变得更加复杂. 所以,为了解决系统复杂所带来的困惑,人们开始使用分层架构. 分出数据访问层,使得数据提供得以重用.分出业务逻…
1.用三种方法生成内容为数字 1,2 ,3 的可变数组.(使用Objective-C,尽量一行代码实现) //方法一 NSMutableArray *arr1 = [[NSMutableArray alloc] initWithObjects:@"1",@"2",@"3",nil]; //方法二 NSMutableArray *arr2 = [[NSMutableArray arrayWithObjects:@"1",@&qu…
通过第一天的学习之后,我们相信您已经对MVC有一些基本了解. 本节所讲的内容是在上节的基础之上,因此需要确保您是否掌握了上一节的内容.本章的目标是在今天学习结束时利用最佳实践解决方案创建一个小型的MVC项目,本节的主要目标是了解MVC之间的数据传递问题.我们会逐步深入讲解,并添加新功能,使项目越来越完善. 系列文章 七天学会ASP.NET MVC (一)——深入理解ASP.NET MVC 七天学会ASP.NET MVC (二)——ASP.NET MVC 数据传递 七天学会ASP.NET MVC…
前言:上篇 JS组件系列——BootstrapTable+KnockoutJS实现增删改查解决方案(一) 介绍了下knockout.js的一些基础用法,由于篇幅的关系,所以只能分成两篇,望见谅!昨天就觉得应该快点完成下篇,要不然有点标题党的感觉,思及此,博主心有不安,于是加班赶出了下篇.如果你也打算用ko去做项目,且看看吧! 一.效果预览 其实也没啥效果,就是简单的增删改查,重点还是在代码上面,使用ko能够大量节省界面DOM数据绑定的操作.下面是整个整个增删改查逻辑的js代码: 页面效果: 二.…
上一篇文章已经建立了基本的实体类,并且搞定了多语言的问题,以后在app里用字符串的时候就可以从资源文件中取了.现在继续进行. 一.添加一个页面 CurrencyExchanger首页是一个货币兑换的列表,这个列表比较复杂,我们先不管,先从简单的页面做起.首先要有一个添加货币的页面,显示所有可添加的货币列表.在WP项目中右键添加一个页面,命名为AddCurrencyPage.xaml. 然后MVVM-Sidekick自动添加了一些东西:除了这个页面之外,在WP项目的ViewModels目录中添加了…
  一.概述 MVC分为ViewModel.Control.View,对数据的封装MVC做的很好,确实是不错的WEB框架,针对MVC的ViewModel封装的也是相当的不错,最近做一个MVC的项目,采用的框架MVC4+JQuery+JQueryUI.由于开发需要,也特别研究了一下MVC中的ViewMode的数据校验,觉得MVC这种模式真的真赞,现总结一下ViewModel的使用方式: 二.ViewModel基础特性 基本特性的命名空间位于: System.ComponentModel.DataA…
一.前言 上篇博客中已经总体的说了一下权限系统的思路和表结构设计,那接下来我们就要进入正文了,先从菜单导航这个功能开始. 二.实现 这个页面基本不用什么需求分析了,大家都很明白,不过在这个页面要多维护一个东西,那就是定义页面中有哪些按钮,这个用弹出窗口做. 我们技术分析一下: 1.直在grid中在线编辑,使用easyui的treegrid控件可实现. 2.行编辑时选择父节点,使用easyui中的combotree控件,数据源直接在treegrid中取. 3.选择图标,这个没有控件可用,自己代码实…
上次笔记实现了游戏商城的UI界面,没有实现动态数据绑定,所以是远远不够的.今天采用NData来做一个商城. 如果你之前没看过,可以参考上一篇博客   NGUI 学习笔记实战——制作商城UI界面  http://www.cnblogs.com/chongxin/p/3876575.html 一.NData介绍以及优点        大体来说NData就是一个NGUI 的 MVVM 框架插件,如果你问我什么是MVVM,我也只能说类似于MVC,至于什么是MVC………… 说道NData的优点,我们先来看…
假设我们有这样一张用户表: public class F_users { [Key] [Display(Name="用户名:")] [Required(ErrorMessage="用户名不能为空")] //[Remote("UserIsExist","Login",ErrorMessage="该用户名已经被占用",HttpMethod="post")] public virtual st…
在mvc3中,默认是一张数据表对应一个model,一个视图 view只显示一个model. 但是有些时候,我们一个视图上可能需要显示多个model的内容,即一个网页可能要展示多张表的信息,那怎么办呢,这时候,ViewModel就能派上用途了. ViewModel,顾名思义,专为view服务的model,专门为view视图准备的model. 我这里假设有两个张数据表,Article表和Information表,都需要在首页上显示出来,看看下面的步骤: 一.先写出两张表各自对应的model和相应的D…
接触XAML很久了,但一直没有深入学习.今天学习了如标题所示的内容,所以来和大家分享一下,或者准确的说是自我回顾一遍. 在XAML中,有两类我们常见的控件,分别是ContentControl和ItemsControl,典型的标识是一个有Content属性,另一个有Items属性. 一:ContentControl 我们平时最常见的该类型控件有Button,RadioButton,CheckBox等.一般有Content属性的都是这类控件.在该类控件中,有一个属性便是ContentTemplate…
一.背景  使用WPF的朋友,大家都很喜欢采用定义控件的公共样式,以便整个框架对该资源的使用,好处就是可以达到代码复用.系统风格统一等: 1. 定义资源       <Style TargetType=] as Setter;                 var template = setter.Value as DataTemplate;                 Console.WriteLine(string.Format("第{0}次加载ButtonContentTem…
通过上一节我们已经对XAML有了一定的了解,这一节我们来系统的学习一下XAML. 一. 简单属性与类型转换器,属性元素: 我们已经知道 XAML是一种声明性的语言,并且XAML解析器会为每个标签创建一个与之对应的对象.光有对象是没有任何意义的,需要对属性之类的赋值才有使用意义.所以就要求XAML为对象属性赋值.XAML中为对象属性赋值共有2种语法:  · 使用字符串进行简单赋值  · 使用属性元素进行复杂赋值 <TextBox VerticalAlignment="Stretch"…
上一章主要是关于分页控件的原理,代码也没有重构.在这一章会附上小插件的下载链接,插件主要就是重构逻辑部分,具体可以下载源文件看下,源代码也有注释.为了测试这个插件是能用的,我弄了个简单的asp.net例子(vs 2010).通过ajax根据每一页请求数据,数据是使用json格式进行传输,通过knockout.js绑定.在这里顺便推荐一下汤姆大叔的Knockout应用开发指南 ,是学习Knockout非常好的文章. 惯例:插件Demo        Asp.net Demo 效果图: 主要思路是通…
MVC框架实现了数据的分离,使页面看起来更加的简洁,MVC4.0中Controller和View的数据传输有上边这几种方式,今天我们来探讨下这几种方式的却别. 一:ViewBag和ViewData ViewBag和ViewData 其实是互通的,他们的区别是 ViewBag不再是键值对的存储形式,而是dynamic动态类型的,他会在程序运行的过程中被解析. 实例 ViewBag本质上是ViewData,只不过是多了层dynamic控制,所以ViewBag和ViewData只针对当前Action有…
AaronYang的C#私房菜[二][提供编程效率的技巧] 前言 我的文章简单易懂,能学到东西.因为复杂的东西,讲起来,好累.阅读者只是膜拜,学不到东西,就是没用的东西,好多文章都是看不下去.我写不出来<大话设计模式>那种为了读者的书,因为没有时间写,这真的是实话.写篇文章真的其实很花时间的,最近一直看别人的东西,所以没怎么写了.   有的人文章写 情感,而有的写技术.这篇文章属于中间的,你将物超所值,让代码飞起来,让技术加速.        写代码的人,我简称 Coder,简写 CD 了  …
     上一篇我们已经介绍了如何使用NuGet把MVVMLight应用到我们的WPF项目中.这篇我们来了解下一个基本的MVVMLight框架所必须的结构和运行模式. MVVMLight安装之后,我们可以看到简易的框架布局,如上篇,生成了一个ViewModel文件夹,ViewModel层的内容都放在这边,除了Main对象的ViewModel之外,还包含一个ViewModelLocator文件, 用来注入当前的ViewModel全局实例.       一.先来说说分层结构: 如图: 1.View负…