Caliburn.Micro学习笔记目录

今天说一下协同IResult

看一下IResult接口

 /// <summary>/// Allows custom code to execute after the return of a action./// </summary>public interface IResult {/// <summary>/// Executes the result using the specified context./// </summary>/// <param name="context">The context.</param>void Execute(ActionExecutionContext context);/// <summary>/// Occurs when execution has completed./// </summary>event EventHandler<ResultCompletionEventArgs> Completed;}

Execute方法里写你要执行的事件,在最后执行事件Completed这是一定要执行的,不然会无法执行后继的yield部分

Execute 方法有一个ActionExecutionContext参数,这个参数与建立UI相关的IResult实现中

非常有用。它能提供的功能如下

public class ActionExecutionContext
{public ActionMessage Message;public FrameworkElement Source;public object EventArgs;public object Target;public DependencyObject View;public MethodInfo Method;public Func<bool> CanExecute;public object this[string key];
}

Message: 造成这 IResult 的调用原始 ActionMessage。

Source: FrameworkElement 触发执行的行动。

EventArgs: 与行动的触发器相关联的任何事件参数。

Target: 在实际的操作方法存在的类实例。

View: 与目标关联的视图。

Method: MethodInfo 指定要在目标实例上调用的方法。

CanExecute: 一个函数,如果操作可被调用、 虚假否则返回 true。

key index: 一个地方来存储/检索它可以对框架的扩展所使用的任何附加元数据。

做一个小Demo

源码:CaliburnIresult.rar

由于这个例子很简单我们把bootstrapper也写简单一些

    class HelloBootstrapper : Bootstrapper<MyViewModel>{}

这样就可以 了
新建一下Loader类去实现IResult接口

    public class Loader : IResult{readonly string _str;public Loader(string str){_str = str;}public void Execute(ActionExecutionContext context){MessageBox.Show(_str + context.View);Completed(this, new ResultCompletionEventArgs());//这个方法一定要加到这里,这个方法完成后才会执行后边的方法
        }public event EventHandler<ResultCompletionEventArgs> Completed = (sender, args) =>{MessageBox.Show(((Loader)sender)._str );};}

前台我们就放一下button就可以

<Window x:Class="CaliburnIresult.MyView"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:cal="http://www.caliburnproject.org"Title="MyView" Height="300" Width="300"><Grid><Button Content="IResult"  cal:Message.Attach="MyIResultClick"/></Grid>
</Window>

在ViewModel里我们看一下它的方法实现

        public IEnumerable<IResult> MyIResultClick(){yield return new Loader("load.....");yield return new Loader("Ok!");}

源码:CaliburnIresult.rar

转载于:https://www.cnblogs.com/li-peng/p/3440972.html

Caliburn.Micro学习笔记(五)----协同IResult相关推荐

  1. Caliburn.Micro学习笔记目录——li-peng

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

  2. Caliburn.Micro学习笔记(三)----事件聚合IEventAggregator和 IhandleT

    Caliburn.Micro学习笔记目录 今天 说一下Caliburn.Micro的IEventAggregator和IHandle<T>分成两篇去讲这一篇写一个简单的例子 看一它的的实现 ...

  3. Caliburn.Micro学习笔记(二)----Actions

    Caliburn.Micro学习笔记目录 上一篇已经简单说了一下引导类和简单的控件绑定 我的上一个例子里的button自动匹配到ViewModel事件你一定感觉很好玩吧 今天说一下它的Actions, ...

  4. Caliburn.Micro学习笔记目录——其他

    Caliburn.Micro - IResult and Coroutines 转载于:https://www.cnblogs.com/SkunkHusband/p/5196933.html

  5. Caliburn.Micro学习笔记目录——Zhouyongh

    解析Caliburn.Micro(一) 解析Caliburn.Micro(二) 解析Caliburn.Micro(三) 解析Caliburn.Micro(四) Illusion = Caliburn. ...

  6. python函数是一段具有特定功能的语句组_Python学习笔记(五)函数和代码复用

    本文将为您描述Python学习笔记(五)函数和代码复用,具体完成步骤: 函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Pyth ...

  7. Ethernet/IP 学习笔记五

    Ethernet/IP 学习笔记五 Accessing data within a device using a non-time critical message (an explicit mess ...

  8. StackExchange.Redis学习笔记(五) 发布和订阅

    StackExchange.Redis学习笔记(五) 发布和订阅 原文:StackExchange.Redis学习笔记(五) 发布和订阅 Redis命令中的Pub/Sub Redis在 2.0之后的版 ...

  9. 吴恩达《机器学习》学习笔记五——逻辑回归

    吴恩达<机器学习>学习笔记五--逻辑回归 一. 分类(classification) 1.定义 2.阈值 二. 逻辑(logistic)回归假设函数 1.假设的表达式 2.假设表达式的意义 ...

  10. 好程序员教程分析Vue学习笔记五

    好程序员教程分析Vue学习笔记五,上次我们学习了Vue的组件,这次我们来学习一下路由的使用.在Vue中,所谓的路由其实跟其他的框架中的路由的概念差不多,即指跳转的路径. 注意:在Vue中,要使用路由, ...

最新文章

  1. AndroidStudio打开新项目后解决下载某版本gradle慢的问题
  2. Java中field的覆写_Java中方法的覆写
  3. 电大 计算机应用基础 专科 教材,2016年电大计算机应用基础(专科).doc
  4. java每过一段时间执行一次代码(方法)
  5. java9 变化_Java 9 ← 2017,2019 → Java 13,来看看Java两年来的变化
  6. java list 替换_Java 实例 – List 元素替换
  7. Python 数据分析与挖掘概述
  8. IPIP.net状告阿里云抄袭侵权
  9. 短视频素材:17个视频网站,涨粉必上热门
  10. Android网络框架(三)——iptables
  11. 今年职高计算机数学高考试题,湖南职高对口数学高考试卷
  12. Nginx-webpy快速搭建反向代理服务及web服务
  13. 关于平面战机射击游戏的一点小结
  14. 质因子分解算法c语言prime,分解质因数的算法
  15. English trip V1 - 11.What's That? 那是什么?Teacher:Patrick Key:There's/There are
  16. WSL嵌入式开发系列教程 4 —— 安装VS code
  17. asp下用OracleInProcServer完成对Oracle的连接和操作
  18. 工作小笔记——对MLE和MAP的简单理解
  19. scrapy框架介绍
  20. 牛顿-莱布尼茨公式练习习题

热门文章

  1. utf-8和gbk的区别
  2. Centos下安装Scrapy
  3. COM 组件设计与应用7 - 编译、注册、调用
  4. 04.spring boot配置文件--yml
  5. python mysql创建表日期型_python 操作mysql,按照当前时间建立表,无法创建表..
  6. [JNI] 开发基础(5)内存分配
  7. BZOJ2005 [NOI2010]能量采集
  8. webpack5配置dev-server在控制台打印信息
  9. dialog的二次封装
  10. 让axios读取本地模拟数据报错404: Error: Request failed with status code 404