*************************
引用网友,便于查找所用.....
创建自定义路由事件和应用分为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. 字符串集合或字符串数组转换成json数组

    字符串可以是List<String>类型的字符串集合,也可以是String[]类型的字符串数组,二者转换成JSON数组的方式没有什么不同.下面代码注意关键的部分即可(画红线部分). 1. ...

  2. 数学 赛码 1010 GCD

    题目传送门 /* 数学:官方题解 首先,数组中每个元素至少是1 然后对于任意一个询问Li, Ri, Ansi, 说明Li ~ Ri中的元素必定是Ansi的倍数,那么只需将其与Ansi取最小公倍数即可 ...

  3. BZOJ3672 : [Noi2014]购票

    设d[i]表示i到1的距离 f[i]=w[i]+min(f[j]+(d[i]-d[j])*v[i])=w[i]+d[i]*v[i]+min(-d[j]*v[i]+f[j]) 对这棵树进行点分治,每次递 ...

  4. COJ1013 : WZJ的数据结构(十三)

    这道题有这样一个解法: 首先把边依次加到图中,若当前这条边与图中的边形成了环,那么把这个环中最早加进来的边弹出去并将每条边把哪条边弹了出去记录下来:ntr[i] = j,特别地,要是没有弹出边,ntr ...

  5. hiho#14

    军训去了没有打,回来看题跑. T1:hehe 注意X可能是实数233 #include<cstdio> #include<cctype> #include<queue&g ...

  6. <!--[if IE]>….<![endif]--> (<!--[if !IE]>||<![endif]-->)的用法

    1. <!--[if !IE]><!--> 除IE外都可识别 <!--<![endif]--> 2. <!--[if IE]> 所有的IE可识别 ...

  7. SVN 中trunk、branches、tags

    SVN 中trunk.branches.tags   我们在一些著名开源项目的版本库中,通常可以看到trunk, branches, tags等三个目录.由于SVN固有的特点,目录在SVN中并没有特别 ...

  8. UAPStudio授权过期的解决方法,重新授权

    1.启动lisence服务器,生成硬件锁, 并导入授权. 需要注意的地方:1.点击工具栏“帮助”下的“UAP-STUDIO”授权管理. 2.删除“D:\UAP-STUDIO\Platform\bin” ...

  9. HDU 2089 数位dp入门

    开始学习数位dp...一道昨天看过代码思想的题今天打了近两个小时..最后还是看了别人的代码找bug...(丢丢) 传说院赛要取消 ? ... 这么菜不出去丢人也好吧~ #include<stdi ...

  10. Nginx 笔记与总结(2)信号控制

    开启.关闭.重启 Nginx 官方地址:http://wiki.nginx.org/CommandLine 开启: /usr/local/nginx/sbin/nginx 关闭,用信号控制,语法: k ...