路由事件与附加事件区别

路由事件:

引发事件和处理CLR事件(注册和解除),都是由宿主自身处理的(this.RaiseEvent   this.AddHandler    this.RemoveHandler);宿主包含3个部分:声明并注册路由事件(XXXEvent)、定义CLR事件包装器(XXX{add,remove})、封装包含引发路由事件代码的方法(OnFunction)

附加事件:

引发事件   和  处理CLR包装(注册和解除),都是由“目标元素”(即要安装该附加事件的那个元素)处理的(e.RaiseEvent   e.AddHandler    e.RemoveHandler);宿主包含2个部分:声明并注册路由事件(XXXEvent)、定义CLR包装器(两个方法:AddXXXHandler;RemoverXXXHandler)、无引发方法的封装(放在需要的地方,由指定的UIElement元素调用RaiseEvent(newEvent)方法来触发事件,其中:newEvent=new RoutedEventArgs(XXXEvent,source) )

时间: 2024-10-23 03:17:58

路由事件与附加事件区别的相关文章

WPF快速指导10:WPF中的事件及冒泡事件和隧道事件(预览事件)的区别

本文摘要: 1:什么是路由事件: 2:中断事件路由: 3:自定义路由事件: 4:为什么需要自定义路由事件: 5:什么是冒泡事件和预览事件(隧道事件): 1:什么是路由事件 WPF中的事件为路由事件,所谓路由事件,MSDN定义如下: 功能定义:路由事件是一种可以针对元素树中的多个侦听器(而不是仅针对引发该事件的对象)调用处理程序的事件. 实现定义:路由事件是一个 CLR 事件,可以由 RoutedEvent 类的实例提供支持并由 Windows Presentation Foundation (W

深入浅出WPF——附加事件(Attached Event)

3.3 事件也附加——深入浅出附加事件 WPF事件系统中还有一种事件被称为附加事件(Attached Event),简言之,它就是路由事件.“那为什么还要起个新名字呢?”你可能会问. “身无彩凤双飞翼,心有灵犀一点通”,这就是对附加事件宿主的真实写照.怎么解释呢?让我们看看都有哪些类拥有附加事件: Binding类:SourceUpdated事件,TargetUpdated事件 Mouse类:MouseEnter事件.MouseLeave事件.MouseDown事件.MouseUp事件,等等 K

WPF的路由事件、冒泡事件、隧道事件(预览事件)

原文:WPF的路由事件.冒泡事件.隧道事件(预览事件) 本文摘要: 1:什么是路由事件: 2:中断事件路由: 3:自定义路由事件: 4:为什么需要自定义路由事件: 5:什么是冒泡事件和预览事件(隧道事件): 1:什么是路由事件 WPF中的事件为路由事件,所谓路由事件,MSDN定义如下: 功能定义:路由事件是一种可以针对元素树中的多个侦听器(而不是仅针对引发该事件的对象)调用处理程序的事件. 实现定义:路由事件是一个 CLR 事件,可以由 RoutedEvent 类的实例提供支持并由 Window

WPF附加事件定义

路由事件的宿主都是些拥有可视化实体的界面元素.而附加事件则不具备显示在用户界面上的能力.加入和移出附件事件的两个方法命名约定: 1.为目标UI元素加入附加事件侦听器的包装器是一个名为Add*Handler的public static方法. 星号代表事件名称,与注冊事件时的名称一致. 2.解除UI元素对附加事件侦听的包装器是名为Remove*Handler的public static方法,星号也是事件名称. 代码例如以下: public class Student { public int ID

如何监视 WPF 中的所有窗口,在所有窗口中订阅事件或者附加 UI

原文:如何监视 WPF 中的所有窗口,在所有窗口中订阅事件或者附加 UI 由于 WPF 路由事件(主要是隧道和冒泡)的存在,我们很容易能够通过只监听窗口中的某些事件使得整个窗口中所有控件发生的事件都被监听到.然而,如果我们希望监听的是整个应用程序中所有的事件呢?路由事件的路由可并不会跨越窗口边界呀? 本文将介绍我编写的应用程序窗口监视器,来监听整个应用程序中所有窗口中的路由事件.这样的方法可以用来无时无刻监视 WPF 程序的各种状态. 其实问题依旧摆在那里,因为我们依然无法让路由事件跨越窗口边界

总结oninput、onchange与onpropertychange事件的用法和区别

前端页面开发的很多情况下都需要实时监听文本框输入,比如腾讯微博编写140字的微博时输入框hu9i动态显示还可以输入的字数.过去一般都使用onchange/onkeyup/onkeypress/onkeydown实现,但是这存在着一些不好的用户体验.比如onchange事件只在键盘或者鼠标操作改变对象属性,且失去焦点时触发,脚本触发无效:而onkeydown/onkeypress/onkeyup在处理复制.粘贴.拖拽.长按键(按住键盘不放)等细节上并不完善. onpropertychange属性可

总结oninput、onchange与onpropertychange事件的用法和区别 书写搜索的神奇代码

总结oninput.onchange与onpropertychange事件的用法和区别 最近手机开发一个模糊搜索的功能组建,在网上就找到这篇文章! 前端页面开发的很多情况下都需要实时监听文本框输入,比如腾讯微博编写140字的微博时输入框hu9i动态显示还可以输入的字数.过去一般都使用onchange/onkeyup/onkeypress/onkeydown实现,但是这存在着一些不好的用户体验.比如onchange事件只在键盘或者鼠标操作改变对象属性,且失去焦点时触发,脚本触发无效:而onkeyd

C# 事件与委托的区别

C# 事件与委托的区别 先看一段程序 class Program { static void Main(string[] args) { Test obj = new Test(); obj.print += printout1; //绑定printout1方法 obj.print += printout2; //绑定printout2方法 obj.start(); } static void printout1() { Console.WriteLine("输出第一段字符串"); }

附加事件

UIElement元素 安装 附加事件 的侦听器只有一种方法:附加事件的宿主调用“Add*Handle”(UIElement元素,事件处理方法的引用)(星号为附加事件名,不包括后缀Event).