1) Должен ли я иметь ModuleManager как
параметр в моем MenuModuleView
конструктор?
Технически, вы могли бы. Тем не менее, на практике вы все равно захотите определить конструктор по умолчанию для своего представления. Иначе ваш взгляд не будет работать у дизайнеров. Поэтому я рекомендую использовать свойства для передачи зависимостей компонентам пользовательского интерфейса.
2) Как мне сделать каталог доступным
изнутри MenuModuleView, по порядку
перечислить доступные модули?
Вы зависите от интерфейса IModuleEnumerator
Prism, а внедрение зависимостей позаботится о предоставлении перечислителя модулей вашему представлению. Предполагая, что вы используете Prism с контейнером Unity, это будет выглядеть примерно так:
[Dependency]
public IModuleEnumerator ModuleEnumerator
{
get; set;
}
3) Из MenuModuleView, как я перечисляю
через модули я создаю
кнопки, присваивая ModuleInfo
свойство тега кнопки. Таким образом, я
иметь только одно событие щелчка, чтобы загрузить
модуль. Это правильно? Пахнет
немного обходной для меня ..
Я бы предложил, чтобы каждая кнопка вызывала одну и ту же команду WPF и вместо этого присваивала ModuleInfo
свойству Button
CommandParameter
. Опять же, у Prism есть инфраструктура, которая поможет вам сделать это чисто в сложном сценарии. См. DelegateCommand
класс.
В качестве заключительного замечания, имейте в виду, что, хотя вы можете лениво загружать свои модули, вы не сможете их выгружать. Для этого вам потребуется AppDomain
изоляция, которая представляет собой совершенно другой чайник с рыбой.