棱镜新手 - 在shell中使用菜单或工具栏注册命令/事件

时间:2011-04-20 01:31:40

标签: wpf architecture prism

我正在创建一个Prism 4应用程序,并且希望每个模块都提供一组可以处理的命令/事件。我想在shell中注册这些事件,以便shell可以使用适当的UI元素(例如菜单,工具栏,功能区元素等)进行渲染,并相应地触发。

例如, 假设我有一个会员模块,提供诸如“添加新会员”,“删除会员”,“搜索会员”等功能。我可能还有一个投资模块,提供诸如“创建投资”,“修改投资”等功能等

每个模块显然都会提供相关功能的实现。他们还将提供此类功能的列表。

理想情况下,Shell会以某种方式聚合这些高级命令,并在视觉上以其选择的方式显示它们。让我们说作为菜单项例如。因此,如果用户点击“会员” - > “搜索成员”菜单项,将引发相应的命令/事件,并将路由到相应的模块/方法。

目前我不确定模块如何注册这些所述命令/事件以及任何UI提示,例如shell的友好名称。参考实现和命令快速启动对这种特定模式没有多大帮助。

提前致谢

1 个答案:

答案 0 :(得分:1)

是的Prism并没有真正给你任何指导。但到目前为止我所看到的是要走的路是创建一个菜单服务。

您的界面可能如下所示:

  public interface IMenuService
  {
        void AddMenuItem(CommandViewModel item);
        void AddMenuItem(CommandViewModel item, string parentName);
        void AddMenuItem(CommandViewModel item, string parentName, bool insert);
        ObservableCollection<CommandViewModel> GetMenuItems();

        void AddToolBarItem(CommandViewModel item);
        void AddToolBarItem(CommandViewModel item, string toolBarName);
        ObservableCollection<CommandViewModel> GetToolBarItems();
  }

然后在模块Initialize方法中,您将注册所有可用的命令/菜单项。