WPF 路由事件 与 命令

WPF 路由事件 与 命令,第1张

事件的前身是消息(在窗体点左键会生成一条携带参数的消息加入windows待处理消息队列,当windows处理到这条消息时会把其发给窗体,窗体再用自己的消息处理函数进行响应)。

消息封装成事件模型后得到简化,只需关注事件的拥有者、响应者、订阅关系(如A订阅了B的事件,即 B.Event 和 A.EventHandler 存在绑定关系),本质上是一个用 event 关键字修饰了的委托实例。

在CLR直接事件模型中,事件的拥有者就是消息的发送者。

路由事件是WPF提供的事件机制,用于弥补直接事件的以下缺陷

路由事件的拥有者和响应者之间没用显示订阅关系,订阅者只负责激发事件,由响应者决定要侦听的事件。

WPF中的事件大多为可路由事件,

此外还有自定义路由事件,可自定义冒泡方式(气泡、隧道和直接)。

由事件的触发源控制接收者如何进行工作,默认左单击为执行命令的时机。

1,,你定义了一个复杂的控件模板(比如Button的), 里面包含了很多的Lable等其他控件。

2,注册这个Button的鼠标单击事件

3,鼠标单击这个Button(鼠标单击的是这个Button中的Label控件)

4,你的事件被触发了

思考:鼠标单击的是Button控件模板中的Label,触发的是这个Label的单击事件,为什么你注册的事件能触发? 这个就是路由事件的具体应用和意义

Click可以变通使用MouseLeftButtonUp事件

如果一定要添加Click,需要通过自定义路由事件,然后通过MouseLeftButtonUp方法中触发Click事件


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11478395.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存