как разделить представление на модули в m-v-vm - PullRequest
3 голосов
/ 30 июля 2009

Я хочу разделить свой проект представлений на несколько модулей. Я хочу иметь основной проект, который будет иметь ссылку на все модули, и этот основной проект будет генерировать представление из модулей.

мой вопрос: как я могу связать все стили из приложения с другими модулями?

будет ли он автоматически распознавать их?

а как будут расположены шаблоны моделей представлений? потому что теперь они находятся в словаре ресурсов, который я объединяю в app.xaml

где я их положил (я хочу, чтобы они были в их модульном проекте), Как я могу загрузить эти ресурсы?

Ответы [ 2 ]

2 голосов
/ 01 августа 2009

хороший вопрос. Как сказал Андерсон Имес, вы можете использовать Composite WPF, но есть еще один более простой вариант, который недавно стал доступен, если вы используете Managed Extensibility Framework (MEF). Есть еще один вопрос, который я задал о том, как сделать именно то, о чем вы говорите, используя MEF. В основном он использует функции расширяемости MEF, чтобы сделать ресурсы приложения расширяемыми, а затем ваши модули «расширяют» ресурсы приложения с помощью своих DataTemplates (Views). Затем вы просто добавляете вашу ViewModel в GUI, где хотите, и WPF позаботится о применении вашего View к нему. Я строю приложение на этой модели, и оно работает очень хорошо.

Преимущество использования этого метода заключается в том, что ваш файл app.xaml не обязан «знать» обо всех ваших модулях View, и вы можете свободно нарезать и нарезать кубики на свое приложение любым способом (я предпочитаю сегментировать это по признаку, затем по слою).

1 голос
/ 30 июля 2009

То, что вы хотите, легко достигается, если вы используете Prism: http://www.codeplex.com/CompositeWPF

Есть много образцов, чтобы вы начали там.

Единственный вопрос, который вы задаете, на который Prism не отвечает, это ResourceDictionaries, но есть несколько способов обойти это, но я думаю, что это лучший способ: Составные шаблоны данных ресурса модуля WPF (Prism)

Первый ответ должен привести вас туда. Вы потеряете небольшую поддержку времени разработки в своих модулях, но все должно работать правильно во время выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...