Caliburn.Micro - 框架搭建_weixin_34315665的博客-程序员秘密

技术标签: php  

简介:Caliburn.Micro是Caliburn的一个轻量级版本开源架构,可以用于wpf,sliverlight,wp7等,和注重模块化的Prism比起来也有许多优点,具体比较可以参考

此文 https://idanreuven.wordpress.com/2016/01/08/prism-vs-caliburn-micro/,本人用过Prism,所以想学习下这个架构,看看是否更方便开发。

它的功能介绍参考官方文档吧,我也少废话,直接以实例开始入门吧。

 

首先新建一个Wpf工程CaliburnTest,Targe framework 至少要选4.5版本

 

1、使用nuget 安装Caliburn.Micro类库

 

2、删除MainWindow.xaml 并且删除App.xaml的  StartupUri="MainWindow.xaml"

 

3、新建一个ViewModel类,命名为ShellViewModel 

public class ShellViewModel 
{

}

 

 

3、新建一个Bootstrapper类,继承BootstrapperBase

public class Bootstrapper: BootstrapperBase {
public Bootstrapper()
{
Initialize(); 
}

protected override void OnStartup(object sender, StartupEventArgs e) {
DisplayRootViewFor<ShellViewModel>();
}
}

 

重写OnStartup方法,使用 DisplayRootViewFor<ShellViewModel>();指定启动的ViewModel,Caliburn.Micro可以根据xxxxViewModel对应xxxxView的协定,自动实例化View,Caliburn.Micro支持View First和ViewModel First两种方式来创建View。完全不用在View的后台代码中写DataContext=new xxxViewModel()代码,十分方便。

4、创建视图 ShellView,注意要按照上述的协定来命名

 

<Window x:Class="CaliburnTest.ShellView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="ShellView" >
<Grid>
<TextBlock>dddd</TextBlock>
</Grid>
</Window>

 

5 修改App.xaml ,加入如下红色代码,注意wpf中和sliverlight中,此处的写法是有区别的,官网给出的是sliverlight的写法

<Application x:Class="CaliburnTest.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:CaliburnTest">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary>
<local:Bootstrapper x:Key="bootstrapper" />
</ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>

运行测试就可以看到窗体启动了。这篇就到此为止,只讲讲如何搭建框架,下一篇再学习binding,Action的协定

 

转载于:https://www.cnblogs.com/karl-F/p/6563817.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_34315665/article/details/94495760

智能推荐

[PyTorch 学习笔记] 1.2 PyTorch 的 Tensor(张量)_张贤同学的博客-程序员秘密

Tensor 的概念本章代码:https://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson1/tensor_introduce1.pyhttps://github.com/zhangxiann/PyTorch_Practice/blob/master/lesson1/tensor_introduce1.pyTensor 中文为张量。张量的意思是一个多为数组,它是标量、向量、矩阵的高维扩展。标量可以称为 0 维张量

机器学习资料_墨玉道人的博客-程序员秘密_learning with kernels: support vector csdn

机器学习推荐书目发表于 2013 年 8 月 22 日来源:水木社区人工智能版。发信人: Insomnia (完美主义是种病), 信区: AI标  题: Machine Learning书单发信站: 水木社区 (Fri Mar 29 16:46:37 2013), 站内持续更新,请补充。除了以下推荐的书以外,出版在Foundations an

关于空值null的排序问题_iteye_8954的博客-程序员秘密

Oracle排序中NULL值处理的五种常用方法:1、缺省Oracle在Order by 时缺省认为null是最大值,所以如果是ASC升序则排在最后,DESC降序则排在最前2、使用nvl函数nvl函数可以将输入参数为空时转换为一指定值,如nvl(employee_name,’张三’)表示当employee_name为空时则返回’张三’,如果不为空则返回employee...

flutter 常见报蓝集合_Vigour.C的博客-程序员秘密

1.This function has a return type of ‘Widget’, but doesn’t end with a return statement.当widget里有判断返回对应的内容时,没有以return语句结尾更改:Widget itemWidget(int type) { if (type == 0) { return Container( margin: EdgeInsets.only(right: px(0)), chi

js replaceAll的实现_徐同保的博客-程序员秘密

js replaceAll的实现 var s = 'xu同保xu' s = s.replace(new RegExp('xu',"gm"), '徐'); console.log(s);

并发包中的ConcurrentLinkedQueue和LinkedBlockingQueue有什么区别?_2NaCl的博客-程序员秘密

我们之前写过关于concurrent包下的hashmap,分析过其原理性能以及和非这个包下的hashTable做过对比,这次就来介绍一下concurrent包下的两个类,ConcurrentLinkedQueue和LinkedBlockingQueue,两个线程安全队列的使用。概述有时候我们把并发包下的所有容器都习惯的称为并发容器,但是严格来讲,只有Concurrent*才是真的并发容器。关...

随便推点

树莓派挂载大硬盘ntfs_最数据的博客-程序员秘密_树莓派挂载ntfs

1 查看挂载情况sudo fdisk -l#sudo parted -ldf -h2 挂载#sudo mount /dev/sda3 /media/pi //挂载硬盘3 特殊情况是服务器,进入rescue模式运行命令返回以下内容[email protected]:~# mount -t ntfs /dev/sda /media/sdb2NTFS signature is missing.Failed to mount '/dev/sdb2': Invalid argu...

初学python!爬取Boss直聘招聘信息并存入csv文件当中_fireabcdefg的博客-程序员秘密

女朋友最近打算换工作,但是又没多少时间去一页页的看每个招聘信息,于是自学了一个半月python的我不自量力的打算把Boss直聘的一些招聘信息给爬下来~~,不多说,直接上代码吧。因为是新手嘛,刚练手,也没有想太多,就是一条线写下去就完了第一步,常规操作,导入库,我是图简单,直接导入了xpinyin库,直接生成拼音文件import requestsfrom lxml import et...

python数据分析与挖掘论文_《Python数据分析与机器学习实战-唐宇迪》读书笔记第10章-特征工程..._weixin_39616477的博客-程序员秘密

第10章特征工程特征工程是整个机器学习中非常重要的一部分,如何对数据进行特征提取对最终结果的影响非常大。在建模过程中,一般会优先考虑算法和参数,但是数据特征才决定了整体结果的上限,而算法和参数只决定了如何逼近这个上限。特征工程其实就是要从原始数据中找到最有价值的信息,并转换成计算机所能读懂的形式。本章结合数值数据与文本数据来分别阐述如何进行数值特征与文本特征的提取。10.1数值特征实际数据中,最常...

PG数组使用_岳麓丹枫001的博客-程序员秘密_pg 数组操作

PG数组使用实例实例建表 create table test(id int, name_list varchar[]);插数据(注意一下使用了两种不同的语法格式) insert into test values(1, ARRAY['lxm','lxm2']); insert into test values(2, ARRAY['lxm','lxm3']); insert i...

微服务的演变以及微服务与微服务之间的通信-----代码示例_生产队队长的博客-程序员秘密

接着上一篇博客:第一步:提供一个服务实例出来:micro-provider(服务提供者),可以单独的去部署到服务器上。①:建个SpringBoot的项目,需要的依赖如下:②:配置下mybatis的数据源和相应的驼峰映射:③:写相应的实体类:④:写相应的Mapper接口,由于这个mapper是交给Spring容器控制和管理的,所以说在启动类上加一个扫描Mapper接口的注解,然后这个...

写出更有效的C++代码_「已注销」的博客-程序员秘密

《Effective C++》笔记。从如何写出高效代码这一角度,进一步了解C++