ActionMessage事件绑定是个人觉的算是CM的精髓了,比如说我在View里面放个button,我们要在他的click事件里面写东西,怎么写.如果是WPF我们直接在CS里面写就可以.但是CM不行,他给我们提供了这个机制.写法如下:EventName指定是什么事件,MethodName是方法名称,<cal:Parameter Value="{Binding ElementName=list, Path=SelectedItems}" />这个方法的参数我们用的事绑定listview控件的选中项.

<Window x:Class="Erp.Views.Test.HelloDataView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:cal="http://www.caliburnproject.org"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" Title="HelloData" Height="350" Width="1000"
xmlns:page="clr-namespace:Erp.Views.UserControls"
WindowStartupLocation="CenterScreen">
<Grid>
<StackPanel Background="LightBlue">
<ListView x:Name="list" Height="130" Margin="5"
cal:Message.Attach="[Event MouseDoubleClick]=[Action Update($this.SelectedItem)]"
>
<ListView.View>
<GridView>
<GridViewColumn x:Name="gvc">
<GridViewColumn.Header>
<CheckBox cal:Action.Target="{Binding ElementName=list}" cal:Message.Attach="[Event Checked]=[Action SelectAll];
[Event Unchecked]=[Action UnselectAll]">全选</CheckBox>
</GridViewColumn.Header>
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox x:Name="ck" Tag="{Binding Path=ID}"
IsChecked="{Binding IsSelected,RelativeSource={RelativeSource AncestorType=ListViewItem}}"></CheckBox>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Header="姓名" Width="60" DisplayMemberBinding="{Binding Path=Name}"/>
<GridViewColumn Header="年龄" Width="60" DisplayMemberBinding="{Binding Path=Age}"/>
<GridViewColumn Header="性别" Width="60" DisplayMemberBinding="{Binding Path=Sex}"/>
<GridViewColumn Header="入职日期" Width="80" DisplayMemberBinding="{Binding Path=Time}"/>
<GridViewColumn Header="国籍" Width="60" DisplayMemberBinding="{Binding Path=Controy}"/>
</GridView>
</ListView.View>
</ListView>

<Button Content="删除" Width="100" >
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cal:ActionMessage MethodName="Delete">
<cal:Parameter Value="{Binding ElementName=list, Path=SelectedItems}" />
</cal:ActionMessage>
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
</StackPanel>
</Grid>
</Window>

CM为ActionMessage提供了更为强大的Attach功能,可以写成这样

<Button cal:Message.Attach="[Event Click]=[Action Delete(list.SelectedItems)]" Content="删除" Width="100"/>
如果我们还需要其他事件,直接叠加就可以

<Button cal:Message.Attach="[Event Click]=[Action Delete(list.SelectedItems)]"

cal:Message.Attach="[Event 事件名称]=[Action 调用的方法(参数)]"

Content="删除" Width="100"/>

WPF + Caliburn.Micro +ActionMessage事件绑定的更多相关文章

  1. [WPF] Caliburn Micro学习三 Binding

    Caliburn Micro学习一 Installation Caliburn Micro学习二 Infrastructure 如果说WPF推崇的Binding开辟了一条UI开发新的方式——让写代码的 ...

  2. [WPF] Caliburn Micro学习二 Infrastructure

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

  3. [WPF] Caliburn Micro学习一 Installation

    在之前的文章(http://blog.csdn.net/alvachien/article/details/5670838)里面,已经提到过MVC和MVVM在Design Pattern上的比较. 首 ...

  4. WPF Caliburn.Micro ListView 批量删除 新方法.高效的

    上一片我做的批量删除,是更具ListView的选项改变事件,然后放到一个全局变量里面,缺点已经说了.这次又找到一个好的方法.和大家分享一下.这次我将删除按钮的click事件里面的参数绑定为ListVi ...

  5. WPF+Caliburn.Micro 杂记

    开发过程中的小问题总结 1DataGrid的Header里面给Checkbox绑定IsEnabled,绑不上去.  2由A页面跳转到B页面,再由B页面返回一个值 3DataGrid里面的行通过一个方法 ...

  6. WPF中的Command事件绑定

    在项目中使用Command绑定能够使我们的代码更加的符合MVVM模式.不了解的同学可能不清楚,只有继承自ButtonBase类的元素才可以直接绑定Command(Button.CheckBox.Rad ...

  7. WPF Caliburn.Micro ListView 批量删除,有其他方法的大家一起交流一下

    做这种批量删除的时候我的想法是获取每行的ID,然后更具ID删除,看过一些博客,大部分都是直接写在.CS文件里面,将ListView和CheckBox关联起来,最后用checkbox ck=sender ...

  8. WPF MVVM 键盘按键事件绑定

    <TextBox Text="{Binding LoginName}" Height="35" Canvas.Left="306" T ...

  9. Caliburn.Micro 杰的入门教程3,事件和参数

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

随机推荐

  1. 【初识 JQMobile 小小总结】

    作为一个前端新手,之前还没有接触过手机端的项目.两周前项目经理告诉我要做手机端,让我用JQMobile. 之前在前端群里,偶尔听说过jqmobile很坑,自己又查了下其他框架,比如zepto.amaz ...

  2. fork()函数详解

    原文链接:http://blog.csdn.net/jason314/article/details/5640969  一.fork入门知识 一个进程,包括代码.数据和分配给进程的资源.fork()函 ...

  3. nodejs 常用全局包

    1.nodemon 更改node程序后程序自动启动 (nodemon app.js) npm install nodemon  -g 2.gulp 压缩合并代码等 npm install gulp - ...

  4. IT人的自我导向型学习:学习的1个理念和2个心态

    本文更新版本已挪至  http://www.zhoujingen.cn/blog/2484.html ----------------------------- 写这一个系列之前,我定位是与高效学习有 ...

  5. python面向对象编程(上)

    面向对象编程(OOP,Object Oriented Programming)是每一个高级编程语言都支持的编程方法,比如JAVA/C++/C#等等.学习面向对象编程是每一个程序员都绕不开的重点内容. ...

  6. C#语法糖之 ReflectionSugar 通用反射类

    用法很简单: ReflectionSugar rs = new ReflectionSugar(100);//缓存100秒 ,可以不填默认不缓存 rs.有嘛点嘛   性能测试: 性能测试类源码: ht ...

  7. ok6410 android driver(9)

    In this essay, I will write the JNI to test our leds device. If you don't know how to create a jni p ...

  8. 重新想象 Windows 8.1 Store Apps (76) - 新增控件: SearchBox

    [源码下载] 重新想象 Windows 8.1 Store Apps (76) - 新增控件: SearchBox 作者:webabcd 介绍重新想象 Windows 8.1 Store Apps 之 ...

  9. 树的统计Count---树链剖分

    NEFU专项训练十和十一——树链剖分 Description 一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w.我们将以下面的形式来要求你对这棵树完成一些操作: I. CHANGE u t ...

  10. python,python3

    当下主流的Linux发行版都集成了python2,直接在终端输入$python就可进入交互式解释器,或者输入$python3进入python3的解释器,当然,也可以使用这个解释器直接翻译一个pytho ...