首先新建一个项目,名称叫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. [apue] 使用 Ctrl+S停止输出而不用挂起前台进程

    之前一直知道使用 Ctrl+Z 挂起前台进程来阻止进程运行,之后可以再通过 shell 的作业控制 (jobs / fg N) 来将后台进程切换为前台,从而继续运行. 最近学到一种新的方法,对于不停有 ...

  2. [bzoj2120] [洛谷P1903] 数颜色

    Description 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会像你发布如下指令: 1. Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜 ...

  3. 清晰架构(Clean Architecture)的Go微服务: 编码风格

    编码风格在编程中是一个相对乏味的主题,但是合适的编码风格对一个有效的程序员是至关重要的. 它有三个组成部分: 程序结构 ( application layout) 编码规则或风格 命名约定 我已经在清 ...

  4. 《ASP.NET Core 高性能系列》关于.NET Core的配置信息的若干事项

    1.配置文件的相关闲话 Core自身对于配置文件不是必须品,但由上文分析可知ASP.NET Core默认采用appsettings.json作为配置文件,关于配置信息的优先等级 命令行>环境变量 ...

  5. 什么是ip地址、子网掩码、网关和DNS?

    什么是ip地址? IP是32位二进制数据,通常以十进制表示,并以“.”分隔.IP地址是一种逻辑地地址,用来标识网络中一个个主机,IP有唯一性,即每台机器的IP在全世界是唯一的. IP地址=网络地址+主 ...

  6. svg图片在vue脚手架vue-cli怎么使用

    第一种 使用vue2-svg-icon npm install vue2-svg-icon --save-dev` 下载之后在mian.js引入 名字可以随便起,这里我起icon 引入svg资源 这时 ...

  7. 安卓开发实战-记账本APP(四)

    今天实现的内容有:添加账本信息,个人头像的切换,密码的修改,退出登录. 添加账本信息有三个功能: ①记一笔支出项目 ②记一笔收入项目 ③清空所有项目 在此期间遇到的困难有:Activity与Fragm ...

  8. ros机器人之动作(二)

    前面我们实现了动作的定义,接下来实现动作的功能 实现一个基本的动作服务器 准备好所需的动作定义后就可以开始编写代码了.动作和话题一样,都是使用回调机制,即回调函数会在收到消息时被唤醒和调用. 例:si ...

  9. VUE报表开发

    因为在项目中经常开发一些报表,并且业务.逻辑其实都有大部分的重复部分. 所以将这些常用的模块抽象出来.并且可视化操作.封装成一款报表开发工具. 先看一下项目的一些效果:数据单项绑定 可视化操作: 数据 ...

  10. 如何在网页读取用户IP,操作系统版本等数据demo

    我们浏览网页的时候,会不经意间看到,有些地方(如个人的签名档)显示出了个人的IP,操作系统等数据.借助第三方API和请求报头useragent是很容易实现的. <html> <hea ...