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添加附件事件
随机推荐
- Linux下设置memcached访问IP
在虚拟机上装了memcached,本地访问可以,但从其它机器连这台机器的memcached应用总是报连接失败.防火墙的端口都是打开的.Google了才知道原来需要修改memcached的配置文件,将默 ...
- ZOJ 3157 Weapon
题目传送门 题意:就是CF round# 329 B 的升级版,要求出相交点的个数 分析:逆序数用树状数组维护,求出非逆序数,然后所有情况(n * (n - 1)) / 2减之就是逆序数个数. #in ...
- CodeForces Round 194 Div2
A. Candy Bagstime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputs ...
- TYVJ P1024 外星人的密码数字
做题记录:2016-08-16 20:09:30 描述 XXXX年突然有外星人造访,但大家语言不通,不过科学家们经过研究发现外星人用26个英文字母组成的单词中最长不降子序列的长度来表述数字,且 ...
- TYVJ P1046 Blast Label:dp
描述 设有字符串X,我们称在X的头尾及中间插入任意多个空格后构成的新字符串为X的扩展串,如字符串X为“abcbcd”,则字符串“abcb□cd”,“□a□bcbcd□”和“abcb□cd□”都是X的扩 ...
- 【TYVJ】1359 - 收入计划(二分)
http://tyvj.cn/Problem_Show.aspx?id=1359 一开始是一眼看出是二分的,因为这里有单调性,因为取钱是一次取完并且是连续的. 所以最优取法就是准备达到某个价值再取.最 ...
- maven工程代码关联源代码配置
最近在学习dubbo,在maven构建完成后,需要关联查看一些依赖jar的源码,配置很简单,如下: 勾选windows-Preferences-Maven- Download Artifact Sou ...
- 使用mybatis执行oracle存储过程
存储过程在小公司用的不多,但是如果业务比较复杂或者性能要求比较苛刻的时候存储过程就派上用场了,ibatis的前期的一些版本貌似不支持存储过程因此我选择了mybatis来做实验. 1.无输入和输出参数的 ...
- 在ASP.Net2.0中使用UrlRewritingNet实现链接重写
采用UrlRewritingNet.UrlRewriter.dll来轻松实现UrlRewritingNet.UrlRewriter.dll 可从其官方网站下载:http://www.urlrewrit ...
- mysql root密码破解
破解root密码:方法一:1./etc/my.cnf在[mysqld]段中加入skip-grant-table2.重启mysql3.直接mysql登录3.通过修改权限表方式修改mysql密码(upda ...