用途:在 Reactor 中,当同一动作出现在多个界面(工具栏、菜单、上下文菜单)、需要键盘快捷键或需要 CanExecute 禁用时使用 Command;一次性按钮点击可用普通 Action。
主要能力:Command 记录含 Label(必填)、Execute 或 ExecuteAsync、CanExecute、Icon、Description、Accelerator、AccessKey、DebounceMs;IsEnabled 由 CanExecute、IsExecuting、IsDebouncing 计算。Command<T> 支持类型化参数,用 MenuItem(cmd, item) 绑定。StandardCommand 工厂提供 Cut、Copy、Paste、Undo、Redo、Delete、Save、Open 等预置命令,可传 canExecute。命令感知 DSL 重载:Button(save)、AppBarButton(save)、MenuItem(save) 自动映射标签、点击、图标、快捷键等;自定义内容用 .Command() 修饰符,可配合 .IsDisabledFocusable()。with 表达式可按站点覆盖 Label、Icon 等。
使用方式:异步命令需用 UseCommand 包装,获得同步 Execute 包装、IsExecuting 状态与自动禁用;须无条件调用,消耗 2 个 hook 槽。DebounceMs>0 提供前沿防抖,需 UseCommand 持久化窗口。CommandHost 将 Accelerator 注册限制在子树内,无 Accelerator 的命令被忽略。可通过 Context 在编辑器与工具栏间共享命令。CommandInterop.FromCommand 桥接现有 MVVM/CommunityToolkit ICommand。
限制与反模式:不要在循环内创建命令;同步命令不要用 UseCommand;不要条件调用 UseCommand;同一命令不要混用 Execute 与 ExecuteAsync。受控属性说明:工厂调用点保持普通值,迁移后的元素记录直接读取为 Optional<T>。