WPF 提供了一个预定义命令库(ApplicationCommands.Save、NavigationCommands.NextPage 等),我们可以在自己的应用程序中为其创建命令绑定。我知道可以为单个 RoutedCommand/RoutedUICommand 创建多个命令绑定,通过指定不同的执行处理程序来根据应用程序上下文获得不同的行为。
据我了解,RoutedUICommand 的目的主要是提供一个通用的语义参考。ApplicationCommands.New,引用 MSDN 文档,“表明了创建新项目的意图。” 此命令可用于命令绑定中,以在应用程序中的多个不相关表单上创建新项目。
我几乎从未见过这种重复使用。在我从事的在线代码和项目中,我通常会看到在代码隐藏或视图模型中定义的 RoutedCommand,名称类似于“NewEmailCommand”。
我看到重用命令的几个优点:
- RoutedUICommands 通常定义了 Text 属性,因此不需要定义菜单项 Header。
- 当命令定义了输入手势时,不需要在每个使用它的地方都指定输入绑定。
- 当命令定义了输入手势时,菜单项中的 InputGestureText 会自动填充。
- 使用相同的命令可以提高整个应用程序的一致性——无论是用于命令的标签还是键/鼠标绑定。
想到的一些可能的缺点:
- 在某些情况下,命令可能不明确。例如:您可能需要在一个位置使用两个不同的“新建”命令(新建->{项目...,网站...})。
- 取而代之或重用一个命令,人们可能想要重用一个使用静态处理程序的命令绑定。
- ApplicationCommands.New 不是一个特别有用的命令名称;它不会告诉您有关当前命令处理程序的任何信息(例如正在创建的内容)。
我非常倾向于重用命令,但正如我所说:我根本没有在实践中看到它。
你的喜好是什么?有没有我没有听说过的公认的“最佳实践”?重用命令是否有明显的问题/其他好处?