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添加附件事件
随机推荐
- 状压DP POJ 2411 Mondriaan'sDream
题目传送门 /* 题意:一个h*w的矩阵(1<=h,w<=11),只能放1*2的模块,问完全覆盖的不同放发有多少种? 状态压缩DP第一道:dp[i][j] 代表第i行的j状态下的种数(状态 ...
- Week,Month, Year 日期区间辅助类
我们在做一些业务系统的时候,经常会用到一些获取时间段的情况.比如要统计某一周.某月.某年 这样一些时间区间内的一些业务数据.这时候我们就需要获取当前时间段内的一些起止日期.这里分享一个通用的日期辅助类 ...
- Square Coins[HDU1398]
Square Coins Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tota ...
- BZOJ3413 : 匹配
FDUSC前刷刷题吧.. 本题每个询问就是说将询问串与主串每个后缀匹配,若匹配成功则结束,否则加上lcp的长度 对主串建立后缀树,并用主席树维护DFS序 对于每个询问串,找到最后走到的点fin_nod ...
- input:focus
input:focus,select:focus,textarea:focus{outline:-webkit-focus-ring-color auto 5px;outline-offset:-2p ...
- BZOJ3924 [Zjoi2015]幻想乡战略游戏
Description 傲娇少女幽香正在玩一个非常有趣的战略类游戏,本来这个游戏的地图其实还不算太大,幽香还能管得过来,但是不知道为什么现在的网游厂商把游戏的地图越做越大,以至于幽香一眼根本看不过来, ...
- 基于SpringMVC框架项目Demo
Git地址:https://github.com/JavaWeb1024/SpringMVC 1. 框架简介: 为打造一套集群高可用的框架,集成的技术目前比较成熟,稳定.相关的知识点在网络上也 ...
- java正则表达式过滤html标签
import java.util.regex.Matcher; import java.util.regex.Pattern; /** * <p> * Title: HTML相关的正则表达 ...
- 地球上最大的PHP站点 后端技术解密
Facebook的扩展性挑战 在我们讨论细节之前,这里有一些Facebook已经做的软件规模: ◆Facebook有570000000000每月页面浏览量 (据Google Ad Planner) ◆ ...
- HDU 1075 What Are You Talking About(Trie的应用)
What Are You Talking About Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 102400/204800 K ...