CM中实现一个比较有意思的特性,就是智能匹配。

通常使用MVVM的写法:在匹配 View和ViewModel时会使用DataContext,在匹配数据属性时使用Binding,在匹配事件命令时使用Command。

而CM通过ElementConvention 实现它们的自动匹配,只需要遵循指定的命名规则[可自定义]。由于一个控件的事件有多种(比如:Button:Click,MouseEnter等等),CM提供了最常用的事件的绑定,可根据具体需求自定义。

自动绑定演示:

在View中添加如下代码:

<Window
x:Class="Caliburn.Micro.Demo.ShellView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:cal="http://www.caliburnproject.org"> <Grid Background="White">
<TextBlock x:Name="TbMain" FontSize="50" />
<Button
x:Name="OpenOneChild"
Width="120"
Height="30"
Content="OpenOneWindow" />
</Grid> </Window>

在ViewModel中添加:

  public class ShellViewModel : Caliburn.Micro.PropertyChangedBase, IShell
{
private readonly IWindowManager windowManager; [ImportingConstructor]
public ShellViewModel(IWindowManager windowManager)
{
TbMain = "This is ShewView";
this.windowManager = windowManager;
}
private string _tbMain;
public string TbMain
{
get { return _tbMain; }
set
{
_tbMain = value;
NotifyOfPropertyChange(() => TbMain);
}
} public void OpenOneChild()
{
ChildOneViewModel oneViewModel=new ChildOneViewModel();
windowManager.ShowDialog(oneViewModel);
}

项目中新建一个ChildOneView.xaml和一个ChildOneViewModel.cs。

<Window
x:Class="Caliburn.Micro.Demo.ChildOneView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:Caliburn.Micro.Demo"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
Title="ChildOneView"
Width="300"
Height="300"
mc:Ignorable="d">
<StackPanel>
<TextBlock x:Name="ChildOne" />
<TextBox Text="{Binding ChildOne}" />
<TextBox />
</StackPanel>
</Window>
public class ChildOneViewModel:Screen
{
public ChildOneViewModel()
{
ChildOne = "This is ChildOneView";
} private string _childOne;
public string ChildOne
{
get { return _childOne; }
set
{
_childOne = value;
NotifyOfPropertyChange(()=>ChildOne);
}
} }

运行:

默认情况下,CM的Convention是默认开启的,可使用ViewModelBinder.ApplyConventionsByDefault = false;来关闭,或者直接使用通常写法,会自动覆盖Convention的自动绑定。

有些时候,在碰到一个属性绑定多个控件等问题时,用起来就不那么顺手了。所以平时也不太会使用此特性。

后面准备介绍一下数据绑定(Binding)和事件响应(Command)两大块的实现方式。

源码文件:http://pan.baidu.com/s/1gfHyhQN

使用Caliburn.Micro系列2:Convention的更多相关文章

  1. 使用Caliburn.Micro系列1:新建项目并引入CM

    一.WPF的几个MVVM模式实现 MVVMLight:小众的平民框架,实现简单粗暴.  pass:最近更新在15年 官网: http://www.mvvmlight.net/ 最近一篇内容全面的好文: ...

  2. Caliburn Micro框架

    Caliburn Micro框架快速上手(WP)   一.使用nuget添加起始工程 二.修改App.xaml文件和App.xaml.cs文件 AppBootstrapper介绍: AppBootst ...

  3. 【整理总结】代码沉淀 - Caliburn.Micro - MV*模式短小精悍的框架

    Caliburn.Micro - Xaml made easy. web: https://github.com/Caliburn-Micro/Caliburn.Microdocument: http ...

  4. Caliburn.Micro 杰的入门教程6, Screens 和 Conductors 简介

    Caliburn.Micro 杰的入门教程1(翻译)Caliburn.Micro 杰的入门教程2 ,了解Data Binding 和 Events(翻译)Caliburn.Micro 杰的入门教程3, ...

  5. Caliburn.Micro 杰的入门教程5,Window Manager 窗口管理器

    Caliburn.Micro 杰的入门教程1(翻译)Caliburn.Micro 杰的入门教程2 ,了解Data Binding 和 Events(翻译)Caliburn.Micro 杰的入门教程3, ...

  6. Caliburn.Micro 杰的入门教程4,事件聚合器

    Caliburn.Micro 杰的入门教程1(原创翻译)Caliburn.Micro 杰的入门教程2 ,了解Data Binding 和 Events(原创翻译)Caliburn.Micro 杰的入门 ...

  7. [Caliburn.Micro专题][1]快速入门

    目录 1. 什么是Caliburn.Micro? 2. 我是否需要学习CM框架? 3. 如何下手? 3.1 需要理解以下几个概念: 3.2 工程概览 3.3 示例代码 开场白:本系列为个人学习记录,才 ...

  8. Caliburn.Micro学习笔记目录

    Caliburn.Micro学习笔记(一)----引导类和命名匹配规则 Caliburn.Micro学习笔记(二)----Actions Caliburn.Micro学习笔记(三)----事件聚合IE ...

  9. WPF +MVVM(Caliburn.Micro)项目框架

    最近做了一个软件,这个软件不是网站,但是与HTML,AJAX等技术密切相关,也不是只有单纯的数据库增删改查,还涉及到线程协调,比较复杂的文本处理…… 这样的软件,用OA,ERP的框架显然是不合适的,因 ...

随机推荐

  1. 八.OC基础加强--1.autorelease的用法 2.ARC下内存管理 3.分类(category)4.block的学习

    1.autorelease的用法   1.自动释放池及autorelease介绍 (1)在iOS程序运行过程中,会创建无数个池子,这些池子都是以栈结构(先进后出)存在的. (2)当一个对象调用auto ...

  2. 整型变量修饰符,char类型数据存储原理,字节数,

    //------------------整型变量修饰符 修饰符(int short long longlong signed unsigned)所有修饰符都是用来修整形 int 4short %hd ...

  3. AC自动机简明教程

    不会kmp和Trie树的请点击右上角X. AC自动机与kmp的唯一区别便是从单模式串变成了多模式串. 那么与kmp相同,AC自动机中的fail指针是指向当前状态的最长后缀. 当然这个后缀要在Trie树 ...

  4. 初识Spring Boot框架和快速入门

    前面的铺垫文章已经连着写了六篇了,主要是介绍了spring和SpringMVC框架,小伙伴们在学习的过程中大概也发现了这两个框架需要我们手动配置的地方非常多,不过做JavaEE开发的小伙伴们肯定也听说 ...

  5. Nvidia GPU 算力查询

    GPU Compute Capability Tesla K80 3.7 Tesla K40 3.5 Tesla K20 3.5 Tesla C2075 2.0 Tesla C2050/C2070 2 ...

  6. Java多线程系列十——BlockingQueue

    参考资料:http://ifeve.com/java-synchronousqueue/http://www.cnblogs.com/jackyuj/archive/2010/11/24/188655 ...

  7. 版本控制系统Git

    常用的版本控制系统有VSS.SVN.CVS等等,Git是最近几年使用得比较多的分布式版本控制系统,存在即合理,Git的出现总有它出现的理由,以前的版本控制系统肯定有一些不足的地方,所以才出现了Git. ...

  8. apicloud踩坑集锦

    最近在用apicloud开发,这里录入一些踩坑的地方,从头到尾,要多尴尬有多尴尬,新入app开发,记录一些心得,和遇到的坑以及解决办法. 1,apicloud 打包的Android app ,打开fr ...

  9. Qt之程序发布以及打包成exe安装包

    一.简述 Qt项目开发完成之后,需要打包发布程序,而因为用户电脑上没有Qt配置环境,所以需要将release生成的exe文件和所依赖的dll文件复制到一个文件夹中,然后再用 Inno Setup打包工 ...

  10. 水题 Codeforces Round #307 (Div. 2) A. GukiZ and Contest

    题目传送门 /* 水题:开个结构体,rk记录排名,相同的值有相同的排名 */ #include <cstdio> #include <cstring> #include < ...