WPF与iOS的事件处理机制

最近在学习WPF中深深感觉到微软的高大上,在iOS中处理事件的机制是响应者链条,触发事件时从最外层一层一层的视图往里面找实现方法,当有响应方法时就终止。这点有点类似于WPF中的隧道路由事件。

在WPF中的事件叫做路由事件

事件定义

public  static  readonly RoutedEvent  ClickEvent;

事件注册

ButtonBase.ClickEvent = EventManager.RegisterRoutedEvent("click",routingStrategy.Bubble,typeof(RoutedEventHandle),typeof(ButtonBase));

引发事件

routedEventArgs e = new RoutedEventArgs(ButtonBase.ClickEvent,this)

base.RaiseEvent(e);


路由事件分为三种方式出现:

第一:与普通的.NET事件类似的直接事件(direct event),他们源于一个元素,不传递给其他元素,例如MouseEnter事件。

第二:在包含层次中向上传递的冒泡路由事件(bubbling event) 例如MouseDown事件,事件首先由被单击的元素引发,接下来被该元素的父元素引发,一级一级向上传递,直到到达元素树的顶部

第三:在包含层次中向下传递的隧道路由事件(tunneling event)隧道路由事件在事件到达恰当的控件之前为预览事件(甚至终止事件)提供了机会。例如,通过PreviewKeyDown事件可以截获是否按下某个键。首先在窗口级别上,然后是更具体的容器,直至到达当时按下键时具有焦点的元素。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是Xaml Xaml(Extensible Application Markup Language) 可扩展应...
    北风知我意阅读 682评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,079评论 19 139
  • 以下文章为转载,对理解JavaScript中的事件处理机制很有帮助,浅显易懂,特分享于此。 什么是事件? 事件(E...
    jxyjxy阅读 3,077评论 1 10
  • JavaScript 程序采用了异步事件驱动编程模型。在这种程序设计风格下,当文档、浏览器、元素或与之相关的对象发...
    劼哥stone阅读 1,295评论 3 11
  • 他人瓦下何来冬雪的温火,往往都是一嘴一嘴冰冷的嘲讽,入骨戳凉人心罢了。 我们追求成功,希望惬意生活,绝非眼前苟且卑...
    青栀不入酒阅读 248评论 0 1