zoukankan      html  css  js  c++  java
  • 学习WPF——了解路由事件

    入门
    我们先来看一个例子
    前台代码:
    后台代码:
    点击按钮的运行效果
    第一个弹出窗口
    第二个弹出窗口:
    第三个弹出窗口:
    说明
    当点击按钮之后,先触发按钮的click事件,再上查找,发现stackpanel也注册了该事件,那么接着触发StackPanel的Button.Click事件,依次再触发Grid的Button.Click事件,这就是最基本的事件路由,事件路由的策略是右内向外的
    如果不希望在XAML中注册路由事件,那么也可以通过编码的方式注册路由事件如下所示
    如果想终止事件的向上传递,可以使用这种办法
    上面的例子是一个冒泡路由事件,是由内向外传递的事件
    WPF中还有一种事件是隧道路由事件,是由外向内传递的事件

    路由事件解析

    在上面的例子中我们看到了Button类的路由事件Click
    下面我们来剖析源码,看看Button是如何注册这个路由事件的
    要使用路由事件,必须先定义路由事件
    首先在Button类的基类ButtonBase中发现了路由事件的定义ClickEvent
    代码中使用EventManager.RegisterRoutedEvent注册了路由事件
    这个方法包含事件的名称、路由类型等内容
    定义了ClickEvent事件之后还需要对事件进行封装
    这里使用到了.Net的事件封装器,
    AddHandler和RemoveHandler用于添加和删除已注册的调用程序
    修改记录
    2015-1-5:完成一部分内容
    2015-1-14:完成全部内容
    参考资料
    《Pro WPF 4.5 in C# 4th Edition》
     
  • 相关阅读:
    SpringBoot整合阿里云OSS
    UVALive
    HDU 5794 A Simple Chess dp+Lucas
    数论
    UVALive
    UVALive
    HDU 5792 World is Exploding 树状数组+枚举
    UVALive
    UVALive
    UVALive
  • 原文地址:https://www.cnblogs.com/liulun/p/4223540.html
Copyright © 2011-2022 走看看