Prism newbie - Регистрация команд / событий с помощью меню или панелей инструментов в оболочке - PullRequest
2 голосов
/ 20 апреля 2011

Я создаю приложение Prism 4 и хотел бы, чтобы каждый из модулей предоставлял набор команд / событий, которые он может обрабатывать. Я хотел бы зарегистрировать эти события в оболочке, чтобы они могли отображаться оболочкой с соответствующими элементами пользовательского интерфейса (такими как меню, панели инструментов, элементы ленты и т. Д.) И вызываться соответствующим образом.

Например, Допустим, у меня есть модуль участника, который предоставляет такие функции, как «Добавить нового участника», «Удалить участника», «Поиск участника» и т. Д. У меня также может быть модуль инвестиций, который обеспечивает такие функции, как «Создание инвестиций», «Изменение инвестиций» и т.д.

Каждый из модулей, очевидно, обеспечит реализации для их соответствующей функциональности. Они также предоставят список таких функций.

В идеале, оболочка должна как-то агрегировать эти команды высокого уровня и отображать их визуально, как захочет. Скажем, в качестве пунктов меню, например. Поэтому, если пользователь нажимает на пункт меню «Член» -> «Поиск участника», соответствующая команда / событие будет вызвана и будет перенаправлена ​​в соответствующий модуль / метод.

В настоящее время я не уверен, как модули будут регистрировать эти указанные команды / события вместе с любыми подсказками пользовательского интерфейса, такими как понятные имена в оболочке. Эталонная реализация и командные быстрые старты не очень помогают этому конкретному шаблону.

Заранее спасибо

1 Ответ

1 голос
/ 28 апреля 2011

Да, 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 method вы зарегистрируете все доступные команды / пункты меню.

...