*************************
引用网友,便于查找所用.....
创建自定义路由事件和应用分为6个步骤:

(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);

}

5.1 Xaml访问自定义控件与引用自定义事件
<local:MyObject Width="80" Height="25" Background="Blue" MyObjectAutoSNHandler="MyObject_MyObjectAutoSNHandler" />
5.2 通过代码方式,添加监听路由事件
this.ContainerName.AddHandler(MyObject.MyObjectRoutedEvent, new RoutedEventHandler(MyObject_MyObjectAutoSNHandler));
6.事件处理behindcode
void MyObject_MyObjectAutoSNHandler(object sender, MyObjectRoutedEventArgs e)
{
      string sn=e.SerialNumber;
}
 
 
*************************
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事件示例代码的更多相关文章

  1. WPF自定义RoutedEvent事件代码段

    今天在写东西的时候,发现常用的代码段里没有RoutedEvent的,因此,写了一个代码段,方便以后使用,顺便记录一下,如何做代码段. 1.在项目中新建一个XML文件,将扩展名修改为snippet. 2 ...

  2. WPF 自定义路由事件

    如何:创建自定义路由事件 首先自定义事件支持事件路由,需要使用 RegisterRoutedEvent 方法注册 RoutedEvent C#语法 public static RoutedEvent ...

  3. Wpf自定义路由事件

    创建自定义路由事件大体可以分为三个步骤: ①声明并注册路由事件. ②为路由事件添加CLR事件包装. ③创建可以激发路由事件的方法. 以ButtonBase类中代码为例展示这3个步骤: public a ...

  4. WPF自定义路由事件(二)

    WPF中的路由事件 as U know,和以前Windows消息事件区别不再多讲,这篇博文中,将首先回顾下WPF内置的路由事件的用法,然后在此基础上自定义一个路由事件. 1.WPF内置路由事件 WPF ...

  5. WPF自定义路由事件(一)

    首先自定义事件支持事件路由,需要使用 RegisterRoutedEvent 方法注册 RoutedEvent C#语法 public static RoutedEvent RegisterRoute ...

  6. 细说WPF自定义路由事件

    WPF中的路由事件 as U know,和以前Windows消息事件区别不再多讲,这篇博文中,将首先回顾下WPF内置的路由事件的用法,然后在此基础上自定义一个路由事件. 1.WPF内置路由事件   W ...

  7. WPF:自定义路由事件的实现

    路由事件通过EventManager,RegisterRoutedEvent方法注册,通过AddHandler和RemoveHandler来关联和解除关联的事件处理函数:通过RaiseEvent方法来 ...

  8. javascript权威指南第13章 事件示例代码

    html 部分 <!DOCTYPE html> <html> <head> <title>Event Bubling Example</title ...

  9. WPF 自定义路由事件 与 附加路由事件

    为student添加附件事件

随机推荐

  1. BeagleBone硬件概览Ethernet端口板载LEDc重置按钮等介绍

    BeagleBone硬件概览Ethernet端口板载LEDc重置按钮等介绍 你进入BeagleBone世界的第一步就是将它连接以得到命令提示,然后你就可以处理文件以及执行命令了.在这里,你就可以定制你 ...

  2. 2015ACM/ICPC亚洲区长春站 E hdu 5531 Rebuild

    Rebuild Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total S ...

  3. BZOJ4303 : 数列

    将每个点看成二维坐标点$(i,a_i)$,那么每次操作的范围都是一个矩形. 于是建立KD-Tree,通过打标记支持操作即可. 时间复杂度$O(m\sqrt{n})$. #include<cstd ...

  4. Linux 档案与目录管理

    『 cd /etc 』这个情况,这也就是所谓的『绝对路径』,他是从根目录连续写上来的一个情况,所以不论你在哪一个路径现执行这一个指令,都会将你移动到该路径下.那如果我是使用『 cd etc 』呢?那表 ...

  5. QCheckBox 的按钮响应

    Qt中QCheckBox的按键响应如下,其中checkbox为对象名: void YourClass::on_checkbox_toggled(bool state) { // Do somethin ...

  6. cmd命令行查看windows版本

    1.ver命令不显示sp几 C:\>ver Microsoft Windows XP [Version 5.1.2600] C:\> 08: C:\Users\Administrator& ...

  7. T-SQL查询进阶--深入浅出视图

    视图可以看作定义在SQL Server上的虚拟表.视图正如其名字的含义一样,是另一种查看数据的入口.常规视图本身并不存储实际的数据,而仅仅存储一个Select语句和所涉及表的metadata. 视图简 ...

  8. [转]一步一步asp.net_购物车订单与支付宝

    本文转自:http://www.cnblogs.com/mysweet/archive/2012/05/19/2508534.html 最近这几天很忙,一边忙着准备一堆课程设计(8门专业课.....伤 ...

  9. Repair duplicate IDs on cloned Endpoint Protection 12.1 clients

    https://support.symantec.com/en_US/article.TECH163349.html

  10. JavaScript操作DOM对象

    js的精华即是操作DOM对象 [1]先看代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8& ...