11.WPF 的命令处理事件--参数介绍
在 WPF 的命令处理事件中,OnCommandHandled(object s, ExecutedRoutedEventArgs e)
方法的参数作用如下:
1. object s
- 含义:事件源对象(Sender),即触发命令的控件(如
Button
、MenuItem
等)。 - 作用:
- 标识哪个控件触发了命令事件(例如用户点击了某个按钮)。
- 可通过类型转换获取具体控件实例(如
Button btn = s as Button;
)。
- 示例场景:
若多个按钮共用同一命令处理逻辑,可通过s
区分具体是哪个按钮触发了事件。
2. ExecutedRoutedEventArgs e
- 含义:命令执行的事件参数,包含命令相关的核心信息。
- 关键属性:
e.Command
:
获取被执行的命令对象(如ApplicationCommands.Copy
)。if (e.Command == ApplicationCommands.Paste) { ... }
e.Parameter
:
获取命令传递的参数(通过CommandParameter
绑定设置的值)。var data = e.Parameter as string; // 获取参数
e.Source
:
获取实际触发命令的原始控件(可能与s
不同,尤其在事件路由中)。e.Handled
:
关键属性:布尔值,默认为false
。- 设置为
true
(如代码中e.Handled = true;
)会停止事件路由,阻止事件继续向上或向下传递。 - 未设置时,事件会沿 WPF 视觉树冒泡/隧道传播。
- 设置为
代码行为解释
e.Handled = true; // 阻止继续路由
- 作用:
标记该命令事件“已处理”,WPF 事件系统将不再将此命令事件传递给其他控件(如父容器或子元素)。 - 典型场景:
在自定义命令处理中,若已完全处理命令逻辑,可设置e.Handled=true
避免其他控件重复响应。
总结
参数 | 类型 | 作用 |
---|---|---|
s | object | 事件触发源控件(可通过类型转换操作具体控件)。 |
e | ExecutedRoutedEventArgs | 提供命令详情(如具体命令、参数),并通过 Handled 控制事件路由行为。 |
通过合理使用这两个参数,可精准控制 WPF 命令的响应逻辑和事件传播范围。