我有一个复合 WPF 应用程序。我计划实现工具栏功能。有几个工具栏项(基本上是打印、保存、隐藏、展开、撤消)对主区域中的所有视图都是通用的。为此,我创建了默认工具栏模块,它将这些项目(打印、保存、隐藏、展开、撤消)添加到工具栏区域。当用户单击任何工具栏项时,这需要由主区域中的所有 20 个视图处理。
对于每个工具栏项,我都关联了一个 prism delegatecommand 对象。
样本:
private ICommand _printCommand;
public ICommand PrintCommand
{
get
{
if (_printCommand == null)
{
_printCommand =
new DelegateCommand<object>(**Print**, **CanPrint**);
}
return _printCommand;
}
}
Xaml,将工具栏项绑定到此命令。
在主要区域,我们显示近 20 个视图。所有这些视图都必须订阅此命令。我正在考虑使用事件聚合器来发布一个事件,所有的视图都会订阅这个事件。
例如:当用户点击打印时,打印命令执行打印方法,该方法将发布打印事件。该事件将被20个视图订阅并做进一步处理。
我是否以正确的方式实现工具栏?