*************************
引用网友,便于查找所用.....
创建自定义路由事件和应用分为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. C#中 As 和强制转换的总结

    1.1.1 摘要 C#是一门强类型语言,一般情况下,我们最好避免将一个类型强制转换为其他类型,但有些时候难免要进行类型转换. 先想想究竟哪些操作可以进行类型转换(先不考虑.NET提供的Parse),一 ...

  2. android 进程什么时候被销毁

    http://wear.techbrood.com/guide/components/processes-and-threads.html 每一个 android 应用默认会起一个进程,除非你用 an ...

  3. SplendidCRM 如何添加及使用中文语言包

    SplendidCRM 功能很强大,也支持多国语言,但关于中文语言安装的介绍在网上一直都找到,自已摸索了一下,成功使SplendidCRM应用中文,以下是安装方法. 版本号:SplendidCRM 7 ...

  4. quick 关于触摸的问题

    以前遇到一个问题就是,如果触摸层不在最后,会导致触摸失效.这是由于下面添加的层挡住了触摸层,而后添加的层会位于上面,默认是不可点击,点击不可穿透的.所以我们必须将触摸层放置到最上面. Logic.lu ...

  5. Medical Image Processing Conference and Journal 医学图像处理会议与期刊

    会议: Information Processing in Medical Imaging,IPMI IPMI2013 International Conference on Medical Imag ...

  6. ASP中可能出现的一种包含漏洞(Server.execute)

    author: bin <% Server.execute(request(“file”)) %> 与include的区别,它可以动态包含文件. 被包含文件里面可执行ASP代码,在国外的源 ...

  7. 在myql sqlserver里边怎么快速找到带有关键字的表

    sql server 全部库: ),) set @id=(select count(*) from master..sysdatabases) drop table #t create table # ...

  8. 字符串&数组的相互转换

    字符串 -> 数组 方法一: $str = "abcd" $s2 = $str.GetEnumerator()  #$s2是无法使用下标的方式进行索引的,因为其不是array ...

  9. 用Get-ADComputer取非常用属性的值

    由于GE使用的是Windows2003+Powershell2.0, 所以某些命令无法使用,比如想取lastLogon和lastLogonTimestamp这两个属性,在Powershell3.0下可 ...

  10. Java表单类双击提交

    双击制御 有些时候一些操作会非常的耗费时间(Long Lived Operation),例如这个数据库的导出,表表生成等.有些时候程序的使用者看到很长时间服务器 没有反应,倾向于多次点击提交按钮.这样 ...