WPF自定义RoutedEvent事件示例代码
(1)自定义路由事件参数对象
(2)声明并注册路由事件
(3)为路由事件添加CLR事件包装
(4)创建可以激发路由事件的方法
(5)Xaml(behind code引用)
(6)事件处理
public class MyObjectRoutedEventArgs:RoutedEventArgs{
public MyObjectRoutedEventArgs(RoutedEvent routedEvent, object source) : base(routedEvent, source) { }
public DateTime ClickTime { get; set; }
}
public class MyObject:Button{
//注册实例化路由事件,Bubble\Direct\Tunnel
public static readonly RoutedEvent MyObjectRoutedEvent
=EventManager.RegisterRoutedEvent("OnMyObjectClick",RoutingStrategy.Bubble
,typeof(EventHandler<MyObjectRoutedEventArgs>),typeof(MyObject);
//CLR包装
public Event RoutedEventHandler MyObjectAutoSNHandler{
add{this.AddHanler{MyObjectRoutedEvent,value};}
remove{this.RemoveHanler{MyObjectRoutedEvent,value};}}
}
public override OnClick(){
base.OnClick();
MyObjectRoutedEventArgs args=new MyObjectRoutedEventArgs();
args.SerialNumber="生成流水号";
args.Subject="生成主题";
使用RaiseEvent(args)来触发路由事件
this.RaiseEvent(args);
}
public static readonly DependencyProperty PageIndexProperty = DependencyProperty.Register("PageIndex", typeof(int), typeof(MoonPdfPanel), new UIPropertyMetadata(1));public int PageIndex{ get {return (int)GetValue(PageIndexProperty);} set { SetValue(PageIndexProperty, value); }}public static readonly RoutedEvent PageIndexChangedEvent = EventManager.RegisterRoutedEvent("PageIndexChanged", RoutingStrategy.Bubble, typeof(RoutedPropertyChangedEventHandler<int>), typeof(MoonPdfPanel));public event RoutedPropertyChangedEventHandler<int> PageIndexChanged{ add { AddHandler(PageIndexChangedEvent, value); } remove { RemoveHandler(PageIndexChangedEvent, value); }}// 触发事件,结尾一定要使用RaiseEvent(args)来触发路由事件。RoutedPropertyChangedEventArgs<int> args = new RoutedPropertyChangedEventArgs<int>( val, this.GetCurrentPageNumber(), PageIndexChangedEvent); this.RaiseEvent(args);WPF自定义RoutedEvent事件示例代码的更多相关文章
- WPF自定义RoutedEvent事件代码段
今天在写东西的时候,发现常用的代码段里没有RoutedEvent的,因此,写了一个代码段,方便以后使用,顺便记录一下,如何做代码段. 1.在项目中新建一个XML文件,将扩展名修改为snippet. 2 ...
- WPF 自定义路由事件
如何:创建自定义路由事件 首先自定义事件支持事件路由,需要使用 RegisterRoutedEvent 方法注册 RoutedEvent C#语法 public static RoutedEvent ...
- Wpf自定义路由事件
创建自定义路由事件大体可以分为三个步骤: ①声明并注册路由事件. ②为路由事件添加CLR事件包装. ③创建可以激发路由事件的方法. 以ButtonBase类中代码为例展示这3个步骤: public a ...
- WPF自定义路由事件(二)
WPF中的路由事件 as U know,和以前Windows消息事件区别不再多讲,这篇博文中,将首先回顾下WPF内置的路由事件的用法,然后在此基础上自定义一个路由事件. 1.WPF内置路由事件 WPF ...
- WPF自定义路由事件(一)
首先自定义事件支持事件路由,需要使用 RegisterRoutedEvent 方法注册 RoutedEvent C#语法 public static RoutedEvent RegisterRoute ...
- 细说WPF自定义路由事件
WPF中的路由事件 as U know,和以前Windows消息事件区别不再多讲,这篇博文中,将首先回顾下WPF内置的路由事件的用法,然后在此基础上自定义一个路由事件. 1.WPF内置路由事件 W ...
- WPF:自定义路由事件的实现
路由事件通过EventManager,RegisterRoutedEvent方法注册,通过AddHandler和RemoveHandler来关联和解除关联的事件处理函数:通过RaiseEvent方法来 ...
- javascript权威指南第13章 事件示例代码
html 部分 <!DOCTYPE html> <html> <head> <title>Event Bubling Example</title ...
- WPF 自定义路由事件 与 附加路由事件
为student添加附件事件
随机推荐
- C#中 As 和强制转换的总结
1.1.1 摘要 C#是一门强类型语言,一般情况下,我们最好避免将一个类型强制转换为其他类型,但有些时候难免要进行类型转换. 先想想究竟哪些操作可以进行类型转换(先不考虑.NET提供的Parse),一 ...
- android 进程什么时候被销毁
http://wear.techbrood.com/guide/components/processes-and-threads.html 每一个 android 应用默认会起一个进程,除非你用 an ...
- SplendidCRM 如何添加及使用中文语言包
SplendidCRM 功能很强大,也支持多国语言,但关于中文语言安装的介绍在网上一直都找到,自已摸索了一下,成功使SplendidCRM应用中文,以下是安装方法. 版本号:SplendidCRM 7 ...
- quick 关于触摸的问题
以前遇到一个问题就是,如果触摸层不在最后,会导致触摸失效.这是由于下面添加的层挡住了触摸层,而后添加的层会位于上面,默认是不可点击,点击不可穿透的.所以我们必须将触摸层放置到最上面. Logic.lu ...
- Medical Image Processing Conference and Journal 医学图像处理会议与期刊
会议: Information Processing in Medical Imaging,IPMI IPMI2013 International Conference on Medical Imag ...
- ASP中可能出现的一种包含漏洞(Server.execute)
author: bin <% Server.execute(request(“file”)) %> 与include的区别,它可以动态包含文件. 被包含文件里面可执行ASP代码,在国外的源 ...
- 在myql sqlserver里边怎么快速找到带有关键字的表
sql server 全部库: ),) set @id=(select count(*) from master..sysdatabases) drop table #t create table # ...
- 字符串&数组的相互转换
字符串 -> 数组 方法一: $str = "abcd" $s2 = $str.GetEnumerator() #$s2是无法使用下标的方式进行索引的,因为其不是array ...
- 用Get-ADComputer取非常用属性的值
由于GE使用的是Windows2003+Powershell2.0, 所以某些命令无法使用,比如想取lastLogon和lastLogonTimestamp这两个属性,在Powershell3.0下可 ...
- Java表单类双击提交
双击制御 有些时候一些操作会非常的耗费时间(Long Lived Operation),例如这个数据库的导出,表表生成等.有些时候程序的使用者看到很长时间服务器 没有反应,倾向于多次点击提交按钮.这样 ...