Caliburn.Micro 杰的入门教程2 ,了解Data Binding 和 Events(翻译)
Caliburn.Micro 杰的入门教程1(翻译)Caliburn.Micro 杰的入门教程2 ,了解Data Binding 和 Events(翻译)Caliburn.Micro 杰的入门教程3,事件和参数Caliburn.Micro 杰的入门教程4,事件聚合器Caliburn.Micro 杰的入门教程5,窗口管理器Caliburn.Micro 杰的入门教程6, Screens 和 Conductors 简介
Caliburn Micro Part 2: Data Binding and Events
原文地址:
http://www.mindscapehq.com/blog/index.php/2012/1/16/caliburn-micro-part-2-data-binding-and-events/
接下来的这篇文章我们将看看Caliburn Micro协助我们绑定数据和事件。 我们将要构建的应用程序概述了在前面的博客添加的一些简单的用户交互和数据显示。
1. Data binding
我们先将应用程序显示的数据存储在Model中。 AppViewModel类的创建类似于上一篇博文。添加一个名为Count的属性。 我们给一个默认值为50。 你可能还记得上次我们AppViewModel类继承了Caliburn Micro提供的PropertyChangedBase粗加工的属性更改通知。 而不是实现INotifyPropertyChanged接口,您可以在属性的setter中简单地调用NotifyOfPropertyChange方法:
public class AppViewModel : PropertyChangedBase
{
private int _count = ; public int Count
{
get { return _count; }
set
{
_count = value;
NotifyOfPropertyChange(() => Count);
}
}
}
接下来,我们修改视图来显示这个属性值。 在AppView.xaml中,添加一个TextBlock,如下:
<Grid MinWidth="300" MinHeight="300" Background="LightBlue">
<TextBlock Name="Count" Margin="20" FontSize="150" VerticalAlignment="Center" HorizontalAlignment="Center" />
</Grid>
现在运行应用程序,看到TextBlock显示计数属性的默认值。

等一下…好神奇啊! 我不记得有设置过任何绑定TextBlock控件和Count属性,然而TextBlock却显示了正确的数据!
注意,我设置了TextBlock控件的name特性和我们想绑定的Count属性一样的名字。 这是Caliburn.Micro提供的一个方便的捷径。 TextBlock等元素,显示数据或文本框,设置他们的名字匹配属性的数据模型将为您自动关联起来。
2. Handling events
接下来,让我们添加一个按钮用来增加显示的数值。 快速又无聊的方式是把一个按钮的单击事件处理器的名称进行关联。 然而,当使用MVVM模式通常最好(但不是绝对必要的)避免使用这种代码后置的方法。 那么让我们来看看Caliburn Micro的处理事件特有的风格。
首先,在AppViewModel中添加一个递增计数的方法,如下:
public void IncrementCount()
{
Count++;
}
之后,在AppView.xaml中添加一个按钮,如下:
<Grid MinWidth="300" MinHeight="300" Background="LightBlue">
<RepeatButton Name="IncrementCount" Content="Up" Margin="15" VerticalAlignment="Top" />
<TextBlock Name="Count" FontSize="150" VerticalAlignment="Center" HorizontalAlignment="Center" />
</Grid>
现在运行应用程序并单击按钮,尝试一下数字的增加效果。 这一次你会注意到,我们不需要做很多工作来绑定按钮的单击事件和IncrementCount方法。 对某些用户界面控件,如按钮,您可以简单地设置的name特性,来控制你想要绑定的方法的名称。 Caliburn Micro将自动绑定适当的用户控件的事件模型中指定的方法。这一个按钮示例中,Caliburn Micro会自动关联Click事件。 (你也可以手动指定哪个事件连接到哪个方法,下次我们将看)。
3. Event guards
当Caliburn Micro自动关联了Click事件和IncrementCount方法。便会自动寻找一个叫CanIncrementCount方法或属性。 通过添加CanIncrementCount方法或属性,您可以包括额外的逻辑,确定基于当前状态是否允许事件处理模型。
我们在AppViewModel中,添加以下属性:
public bool CanIncrementCount
{
get { return Count < ; }
}
因为这个逻辑是基于Count属性的值,我们还需要在CanIncrementCount计数值变化时,添加自动属性更改通知。
可在Count属性的setter中,添加这行代码:
NotifyOfPropertyChange(() => CanIncrementCount);
现在的Count属性,就变成这样:
public int Count
{
get { return _count; }
set
{
_count = value;
NotifyOfPropertyChange(() => Count);
NotifyOfPropertyChange(() => CanIncrementCount);
}
}
再次运行应用程序,将增量值增加到100。 每次Count增量增加,都会通过CanIncrementCount判断可用性,一旦限制已经达到,按钮将变成不可用,防止用户进一步增加数值。
在本教程中我们看了几个方法,了解Caliburn Micro的一些工作。 现在你可以更快地使用数据绑定,属性更改通知、事件处理程序和事件监视,同时实现一个坚固的更容易测试和维护的MVVM应用程序。
Caliburn.Micro 杰的入门教程2 ,了解Data Binding 和 Events(翻译)的更多相关文章
- Caliburn.Micro 杰的入门教程6, Screens 和 Conductors 简介
Caliburn.Micro 杰的入门教程1(翻译)Caliburn.Micro 杰的入门教程2 ,了解Data Binding 和 Events(翻译)Caliburn.Micro 杰的入门教程3, ...
- Caliburn.Micro 杰的入门教程5,Window Manager 窗口管理器
Caliburn.Micro 杰的入门教程1(翻译)Caliburn.Micro 杰的入门教程2 ,了解Data Binding 和 Events(翻译)Caliburn.Micro 杰的入门教程3, ...
- Caliburn.Micro 杰的入门教程4,事件聚合器
Caliburn.Micro 杰的入门教程1(原创翻译)Caliburn.Micro 杰的入门教程2 ,了解Data Binding 和 Events(原创翻译)Caliburn.Micro 杰的入门 ...
- Caliburn.Micro 杰的入门教程3,事件和参数
Caliburn.Micro 杰的入门教程1(翻译)Caliburn.Micro 杰的入门教程2 ,了解Data Binding 和 Events(翻译)Caliburn.Micro 杰的入门教程3, ...
- Caliburn.Micro 杰的入门教程1(翻译)
Caliburn.Micro 杰的入门教程1(原创翻译)Caliburn.Micro 杰的入门教程2 ,了解Data Binding 和 Events(翻译)Caliburn.Micro 杰的入门教程 ...
- [WPF] Caliburn Micro学习三 Binding
Caliburn Micro学习一 Installation Caliburn Micro学习二 Infrastructure 如果说WPF推崇的Binding开辟了一条UI开发新的方式——让写代码的 ...
- [Caliburn.Micro专题][1]快速入门
目录 1. 什么是Caliburn.Micro? 2. 我是否需要学习CM框架? 3. 如何下手? 3.1 需要理解以下几个概念: 3.2 工程概览 3.3 示例代码 开场白:本系列为个人学习记录,才 ...
- Docker入门教程(九)10个镜像相关的API
Docker入门教程(九)10个镜像相关的API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第九篇,重点介绍了镜像相关的Docker Remote ...
- Docker入门教程(七)Docker API
Docker入门教程(七)Docker API [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第七篇,重点介绍了Docker Registry API和 ...
随机推荐
- 代码大全读书笔记 Part 1
简单的看了前言,印象最深的还是这本书崇尚"绝不注水"的原则.现实生活中,不仅仅有注水牛肉,瘦肉精的猪肉,很多书籍也是东拼西凑来的内容,不注水的厚书,是十分令人期待的. 第一章:欢迎 ...
- postgresql+postgis+pgrouting实现最短路径查询(2)---openlayers+geoserver实现最短路径
自己的最短路径实现基本上是按照参考博文的1.2和3进行的,实现的时候也是问题不断,只能是一个一个解决. 问题1:自己发布的geoserver服务无法和OSM底图叠加到一起. 解决:参考博文2提到发布服 ...
- MATLAB入门学习(七)
开始,线性代数和微积分了,不怕.不怕. 背命令就行了... 线性代数 解线性方程组: Ax=b A是系数矩阵,x未知数,b是列向量 如果有唯一解,直接x=b\A 第二 B=null(A,'r')求Ax ...
- 安装最新版的wampserver,可以兼容php5和php7
本文介绍的wamp是Windows+Apache+MySQL+PHP+phpMyAdmin,主要应用于开发环境[一键安装包,简单好用]. 这是运行在Windows系统下的官方安装包,可以快速的搭建属于 ...
- OC变量命名禁忌
OC变量命名禁忌 1.在NSString类不能定义变量名为description, 每个类都有 - (NSString *)description{} 这样一个get方法. 2.不能将变量的名称定义为 ...
- SVN文件自动加锁-Win7
在Win7操作系统上 打开目录C:\Users\Administrator\AppData\Roaming\Subversion 用记事本打开config文件 将enable-auto-props = ...
- ASP.NET CORE MVC 2.0 如何在Filter中使用依赖注入来读取AppSettings,及.NET Core控制台项目中读取AppSettings
问: ASP.NET CORE MVC 如何在Filter中使用依赖注入来读取AppSettings 答: Dependency injection is possible in filters as ...
- CSS3-阴影参数基础
box-shadow 语法:text-shadow: x-shadow y-shadow distance color; 值 描述 x-shadow 必需.水平阴影的位置.允许负值. y-sha ...
- 课时10.第一个HTML网页(掌握)
网页的固定格式 编写网页和写信一样都有一套规范和要求,这套规范和要求中规定了写信的固定格式 写信基本结构 亲爱的xx: 你好! 我.................. ...... 此致 敬礼! xx ...
- Swift_枚举
Swift_枚举 点击查看源码 空枚举 //空枚举 enum SomeEnumeration { // enumeration definition goes here } 枚举基本类型 //枚举基本 ...