C#面试题更新 2026-08-05

请说明在 WPF 应用中,通过命令(Command)机制替代传统事件处理的具体做法及其优势。

技术原理方案权衡C#WPF

考察说明

考察对 WPF 命令机制的理解以及实际应用能力。

回答思路

  1. 【回答框架 1】WPF 命令机制由 ICommand 接口、命令源(如 Button)和命令目标(如 ViewModel 或控件)组成。ICommand 包含 CanExecute 和 Execute 方法,CanExecute 决定命令是否可执行,Execute 执行具体逻辑。
  2. 【回答框架 2】使用命令替代事件处理,需要在 ViewModel 中实现 ICommand 或使用 RelayCommand(如 Prism 的 DelegateCommand)。例如,在 ViewModel 中创建 ICommand 属性,并在构造函数中初始化其 Execute 和 CanExecute 逻辑。
  3. 【回答框架 3】在 XAML 中,将按钮的 Command 属性绑定到 ViewModel 中的命令属性。这样,按钮的点击自动触发命令,无需在 Code-Behind 中编写事件处理方法。
  4. 【回答框架 4】命令机制的优势包括:解耦视图和业务逻辑、支持自动启用/禁用(通过 CanExecute)、支持命令绑定和路由(如 CommandTarget)、更容易进行单元测试,以及便于统一管理输入和 UI 交互。
  5. 【关键点 1】核心是 ICommand 接口,包含 CanExecute 和 Execute 方法。
  6. 【关键点 2】通过数据绑定将控件的 Command 属性关联到 ViewModel 的命令属性。
  7. 【关键点 3】命令机制提高可测试性和解耦性。
  8. 【易错点 1】CanExecute 的触发通常需要手动调用 CanExecuteChanged 事件,否则 UI 不会自动更新。
  9. 【易错点 2】路由命令(如 ApplicationCommands)默认行为可能不满足自定义逻辑,需注意。
  10. 【易错点 3】命令的 Execute 方法内不宜包含复杂业务,应通过调用服务或方法实现。