在代表该命令并派生自 ICommand 的类中实现命令对我来说似乎更整洁。这样,我还可以在 MEF 复合应用程序中导出和导入命令。
这是可能的,还是可行的?是否有已知的模式来实现这一点?
我不确定这如何回答您的问题,因为我对 MEF 了解不多。
不需要直接引用类中的命令实例,但您确实需要某种方式来呈现一个绑定源,该绑定源将一个返回到视图。例如,您可以通过将 MenuItem 的 ItemsSource 绑定到返回动态生成的命令 IEnumerable 的属性来构建菜单。
您还可以使用值转换器来按需获取某个任意标识符的命令:
<Button Command="{Binding Path=CommandId, Converter={StaticResource CommandConverter}}" />
或者直接从 XAML 通过 Binding.Source 传递标识符:
<Button Command="{Binding Source=DesiredCommand, Converter={StaticResource CommandConverter}}" />
在这种情况下,字符串“DesiredCommand”将被传递给转换器。