WPF + Caliburn.Micro +ActionMessage事件绑定
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事件绑定的更多相关文章
- [WPF] Caliburn Micro学习三 Binding
Caliburn Micro学习一 Installation Caliburn Micro学习二 Infrastructure 如果说WPF推崇的Binding开辟了一条UI开发新的方式——让写代码的 ...
- [WPF] Caliburn Micro学习二 Infrastructure
Caliburn Micro学习一 Installation http://blog.csdn.net/alvachien/article/details/12985415 Step 1. 无论是通过 ...
- [WPF] Caliburn Micro学习一 Installation
在之前的文章(http://blog.csdn.net/alvachien/article/details/5670838)里面,已经提到过MVC和MVVM在Design Pattern上的比较. 首 ...
- WPF Caliburn.Micro ListView 批量删除 新方法.高效的
上一片我做的批量删除,是更具ListView的选项改变事件,然后放到一个全局变量里面,缺点已经说了.这次又找到一个好的方法.和大家分享一下.这次我将删除按钮的click事件里面的参数绑定为ListVi ...
- WPF+Caliburn.Micro 杂记
开发过程中的小问题总结 1DataGrid的Header里面给Checkbox绑定IsEnabled,绑不上去. 2由A页面跳转到B页面,再由B页面返回一个值 3DataGrid里面的行通过一个方法 ...
- WPF中的Command事件绑定
在项目中使用Command绑定能够使我们的代码更加的符合MVVM模式.不了解的同学可能不清楚,只有继承自ButtonBase类的元素才可以直接绑定Command(Button.CheckBox.Rad ...
- WPF Caliburn.Micro ListView 批量删除,有其他方法的大家一起交流一下
做这种批量删除的时候我的想法是获取每行的ID,然后更具ID删除,看过一些博客,大部分都是直接写在.CS文件里面,将ListView和CheckBox关联起来,最后用checkbox ck=sender ...
- WPF MVVM 键盘按键事件绑定
<TextBox Text="{Binding LoginName}" Height="35" Canvas.Left="306" T ...
- Caliburn.Micro 杰的入门教程3,事件和参数
Caliburn.Micro 杰的入门教程1(翻译)Caliburn.Micro 杰的入门教程2 ,了解Data Binding 和 Events(翻译)Caliburn.Micro 杰的入门教程3, ...
随机推荐
- ubuntu14.04使用IceGridAdmin图形界面
打开网页: http://www.rpmfind.net/linux/RPM/index.html输入搜索: icegrid-gui下载文件: icegrid-gui-3.5.1-2.mga4.x86 ...
- 关于全局唯一ID生成方法
引:最近业务开发过程中需要涉及到全局唯一ID生成.之前零零总总的收集过一些相关资料,特此整理以便后用 本博客已经迁移至:http://cenalulu.github.io/ 本篇博文已经迁移,阅读全文 ...
- JS手动触发事件,转载
1. createEvent(eventType)参数:eventType 共5种类型: Events :包括所有的事件. HTMLEvents:包括 'abort', 'b ...
- php中mysql操作的buffer知识
php与mysql的连接有三种方式,mysql,mysqli,pdo.不管使用哪种方式进行连接,都有使用buffer和不使用buffer的区别. 什么叫使用buffer和不使用buffer呢? 客户端 ...
- IOS开发UI基础 UIAlertView的属性
UIAlertView1.Title获取或设置UIAlertView上的标题. 2.Message获取或设置UIAlertView上的消息 UIAlertView *alertView = [[UIA ...
- TreeSet与TreeMap浅解
TreeSet与TreeMap的关系: 1.TreeSet 实际上就是用TreeMap来组织数据的,因为在TreeSet中保存了一个NavigableMap<e,Object>接口实例变量 ...
- Web 前端性能优化准则
准则01:尽量减少http请求 “只有10%-20%的最终用户响应时间花在接收请求的HTML文档上,剩下的80%-90%时间花在HTML文档所引用的所有组件(图片,script,css,flash等等 ...
- Array,List,Struct可能被大家忽略的问题
Q1: 首先定义一个结构 public struct MyStruct { public int T; } 定义一个泛型List来存放结构体,然后访问第一个元素去修改T,输出T: List<My ...
- Oracle级联查询
在ORACLE 数据库中有一种方法可以实现级联查询 select * //要查询的字段 from table //具有子接点ID与父接点I ...
- 404 Not Found错误页面的解决方法和注意事项
最近这段时间一直忙于整理网站的错误页面,期间整理了很多关于404 Not Found错误页面的知识,加之最近也在帮团队新来的人员培训seo优化知识,所以在此借助马海祥博客的平台就拿出来跟大家一起分享一 ...