首先新建一个项目,名称叫Caliburn.Micro.ActionConvertions

然后删掉MainWindow.xaml

然后去app.xaml删掉StartupUri这行代码

其次,安装Caliburn.Micro,Caliburn.Micro.Core,这两个Nuget包,如下图

然后新建一个类Bootstrapper,这个类是引导作用,比如重写了首页的引导,ioc注入等

然后在项目中新建ViewModels,Views,在Views中添加窗口ShellView,在ViewModels中添加类ShellViewModel,如下图

public class Bootstrapper : BootstrapperBase
{
private SimpleContainer container; public Bootstrapper()
{
Initialize();
} protected override void Configure()
{
container = new SimpleContainer(); container.Singleton<IWindowManager, WindowManager>(); container.PerRequest<ShellViewModel>();
} protected override void OnStartup(object sender, StartupEventArgs e)
{
DisplayRootViewFor<ShellViewModel>();
} protected override object GetInstance(Type service, string key)
{
return container.GetInstance(service, key);
} protected override IEnumerable<object> GetAllInstances(Type service)
{
return container.GetAllInstances(service);
} protected override void BuildUp(object instance)
{
container.BuildUp(instance);
}
}

再继续新建一个类TaskHelper

TaskHelper类的内容入下

修改ShellViewModel类

public class ShellViewModel : Screen
{
private string output; public void Clear() => Output = String.Empty; public void SimpleSayHello() => Output = "Hello from Caliburn.Micro"; public void SayHello(string name) => Output = $"Hello {name}"; public bool CanSayHello(string name) => !String.IsNullOrEmpty(name); public Task SayGoodbyeAsync(string name)
{
Output = $"Goodbye {name}"; return TaskHelper.FromResult(true);
} public bool CanSayGoodbye(string name) => !String.IsNullOrEmpty(name); public string Output
{
get { return output; }
set { Set(ref output, value); }
}
}

然后修改ShellView页面的布局

<Window x:Class="Caliburn.Micro.ActionConvertions.Views.ShellView"
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:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Caliburn.Micro.ActionConvertions.Views"
mc:Ignorable="d"
xmlns:cm="http://www.caliburnproject.org"
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
Title="ShellView" Height="" Width="">
<Window.Resources>
<Style x:Key="ActionButtonStyle"
TargetType="Button">
<Setter Property="Margin"
Value="0,10,0,0" />
<Setter Property="HorizontalAlignment"
Value="Stretch" />
</Style>
</Window.Resources>
<Grid>
<ScrollViewer>
<StackPanel Margin="24,12">
<TextBlock>
<Run Text="Output:"
FontWeight="Bold" />
<Run Text="{Binding Output}" />
</TextBlock> <TextBlock Text="Name" />
<TextBox x:Name="Name"
Margin="0,10,0,0"
HorizontalAlignment="Stretch" /> <Button x:Name="Clear"
Content="Clear"
Style="{StaticResource ActionButtonStyle}" />
<Button x:Name="SimpleSayHello"
Content="Simple Say Hello"
Style="{StaticResource ActionButtonStyle}" />
<Button cm:Message.Attach="SimpleSayHello"
Content="Simple Say Hello (using Message.Attach)"
Style="{StaticResource ActionButtonStyle}" />
<Button cm:Message.Attach="[Event MouseDoubleClick] = [SimpleSayHello]"
Content="Simple Say Hello (Custom Event - Double Tapped)"
Style="{StaticResource ActionButtonStyle}" />
<Button x:Name="FullSyntax"
Content="Simple Say Hello (Full Behaviour Syntax)"
Style="{StaticResource ActionButtonStyle}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cm:ActionMessage MethodName="SimpleSayHello" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
<Button x:Name="SayHello"
Content="Say Hello (with parameter)"
Style="{StaticResource ActionButtonStyle}" />
<Button cm:Message.Attach="SayHello(Name)"
Content="Say Hello (with parameter and Message.Attach)"
Style="{StaticResource ActionButtonStyle}" />
<Button x:Name="SayGoodbye"
Content="Say Goodbye (async method)"
Style="{StaticResource ActionButtonStyle}" />
</StackPanel>
</ScrollViewer>
</Grid>
</Window>

修改App.xaml的引导程序代码

    <Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary>
<local:Bootstrapper x:Key="Bootstrapper" />
</ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>

然后运行如下图所示

如果转载请标明博客地址https://www.cnblogs.com/R00R/,谢谢

Caliburn.Micro框架之Action Convertions的更多相关文章

  1. Caliburn Micro框架

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

  2. Caliburn.Micro - 框架搭建

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

  3. Caliburn.Micro框架之Bindings

    新建一个WPF项目,将其命名为Caliburn.Micro.BindingsDemo 其次安装Caliburn.Micro,安装Caliburn.Micro的同时也会安装Caliburn.Micro. ...

  4. Caliburn Micro框架快速上手(WP)

    一.使用nuget添加起始工程         二.修改App.xaml文件和App.xaml.cs文件     AppBootstrapper介绍: AppBootstrapper根据中文的直译可以 ...

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

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

  6. 从0到1:使用Caliburn.Micro(WPF和MVVM)开发简单的计算器

    从0到1:使用Caliburn.Micro(WPF和MVVM)开发简单的计算器 之前时间一直在使用Caliburn.Micro这种应用了MVVM模式的WPF框架做开发,是时候总结一下了. Calibu ...

  7. [WPF] Caliburn Micro学习二 Infrastructure

    Caliburn Micro学习一 Installation http://blog.csdn.net/alvachien/article/details/12985415 Step 1. 无论是通过 ...

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

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

  9. 开源框架Caliburn.Micro

    Caliburn.Micro学习笔记----引导类和命名匹配规则   用了几天时间看了一下开源框架Caliburn.Micro 这是他源码的地址http://caliburnmicro.codeple ...

随机推荐

  1. python条件与循环-条件

    1.条件和循环 主要讨论:if.while.for以及相关的搭配else.elif.break.continue和pass语句. 1.1 if语句 if语句由三部分组成:关键字本身.用于判断结果真假的 ...

  2. ios--->const 用法总结

    const 用法总结 宏.变量.常量区分 宏:只是在预处理器里进行文本替换,没有类型,不做任何类型检查,编译器可以对相同的字符串进行优化.只保存一份到 .rodata 段.甚至有相同后缀的字符串也可以 ...

  3. mysql--->innodb引擎什么时候表锁什么时候行锁?

    mysql innodb引擎什么时候表锁什么时候行锁? InnoDB基于索引的行锁 InnoDB行锁是通过索引上的索引项来实现的,这一点MySQL与Oracle不同,后者是通过在数据中对相应数据行加锁 ...

  4. 【置顶】入驻百家号【九哥聊IT】和【九哥九嫂小日子】,欢迎关注

    欢迎大家关注. 1.关注百家号[九哥聊IT],每天专注讲解互联网最新资讯和知识分享.2.关注百家号[九哥九嫂小日子],带你看下班之外的九哥.

  5. SQLException:The server time zone

    报错信息如下: java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represen ...

  6. springboot mybatis 多数据源配置支持切换以及一些坑

    一 添加每个数据源的config配置,单个直接默认,多个需要显示写出来 @Configuration @MapperScan(basePackages ="com.zhuzher.*.map ...

  7. Docker深入浅出系列 | 容器初体验

    目录 Docker深入浅出系列 | 容器初体验 教程目标 预备工作 容器与虚拟化技术 什么是Docker 为什么要用Docker 事例 什么是容器镜像和容器 容器与虚拟机的区别 Vagrant与Doc ...

  8. Spring初识、新建工程

    1.spring与三层架构的关系: spring负责管理项目中的所有对象,是一个一站式的框架,容器中的对象决定了spring的功能. 2.spring核心架构 Spring框架主要由六个模块组成,在开 ...

  9. PuTTYTabManager汉化版

    PuTTY Tab Manager(puttytm) V0.52 zh_CN 简体中文汉化版 功能 Putty是一款小巧好用免费的SSH客户端工具,但是不支持多标签管理,网上找了一些相关的putty多 ...

  10. python day01练习和作业

    习题:1.简述编译型与解释型语言的区别,且分别列出你知道的哪些语言属于编译型,哪些属于解释型编译型语言:优点:执行速度快 缺点:维护成本高,跨平台性差解释型语言:优点:维护成本低,跨平台性好 缺点:执 ...