PRISM + MEF + MVVM - Не знаете, с чего начать? - PullRequest
21 голосов
/ 09 февраля 2011

Что я использую:

  • Visual Studio 2010
  • Microsoft .NET Framework 4
  • Prism v4

То, что я пытаюсь выяснить, - это как начать работу с Prism + MEF при сохранении шаблона MVVM. Когда я перехожу к быстрому запуску Prism, у него есть Prism + MEF, но в комментариях к проекту конкретно говорится, что пример быстрого запуска не реализует MVVM. Я не совсем уверен, что смешивать / сопоставлять, чтобы моя оболочка следовала MVVM (и регионам).

По сути, я хочу использовать MEF, чтобы иметь возможность загружать сборки (модули) во время выполнения. И я хочу настроить регионы в моей командной консоли, чтобы она использовала MVVM (чтобы я мог связать данные с оболочкой). Каждый онлайн-пример - это Prism, Prism + MVVM, Prism + Unity, примеры Silverlight, Prism + MEF и т. Д. Но я не могу найти примеры или информацию WPF Prism + MEF + MVVM или информацию. Я действительно понятия не имею, как настроить загрузку и так далее.

Как только эта часть будет завершена, я уверен, что выясню, как загрузить другие элементы управления, используя MVVM, в мою оболочку. Любая помощь была бы очень полезна, особенно ресурсы, которые непосредственно связаны с этой ситуацией в сопоставлении с чем-то похожим (то есть Prism + Unity и без MEF). Спасибо!

Ответы [ 2 ]

1 голос
/ 18 мая 2015

Похоже, что все, что вы просили, присутствует в примерах, поставляемых с Prism, вы только что посмотрели на неправильные.

Проверьте папку StockTrader RI , которая описана здесь .

Он имеет довольно полный образец для реальных приложений с некоторыми сложными сценариями и реализован с помощью Prism (очевидно), MVVM и MEF.

Редактировать: Несмотря на то, что я предоставил ссылку на Prism 5, образец также присутствовал в Prism 4.1. В этой версии документация не была доступна онлайн (по крайней мере, насколько я помню), но вместо этого она была предложена в файле .chm, установленном с исходным кодом Prism + примеры. Впрочем, про v4.0 не знаю.

1 голос
/ 13 апреля 2015

Я никогда не использовал Prism + MEF, но в своем вопросе вы упоминаете, что хотите загружать модули во время выполнения (с MEF). Это то, что вам не нужно иметь MEF, потому что Prism вполне хорош в этом сам. Настройка довольно проста:

Сначала создайте модуль Prism, реализовав Modularity.IModule. Требуется только один метод: Initialize(). Здесь вы можете выполнить любую настройку, необходимую для вашего модуля. Я обычно также расширяю конструктор, чтобы внедрить любые другие интерфейсы, которые мне могут понадобиться (используя Unity).

Затем создайте ModuleCatalog, чтобы указать детали созданного вами модуля:

<Modularity:ModuleCatalog 
           xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
           xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
           xmlns:Modularity="clr-namespace:Microsoft.Practices.Prism.Modularity;assembly=Microsoft.Practices.Prism.Composition">
    <Modularity:ModuleInfo Ref="Your.ModuleProject.dll" 
        ModuleType="Your.ModuleProject.Module, Your.ModuleProject" 
        ModuleName="Module1" 
        InitializationMode="OnDemand" />
</Modularity>

InitializationMode - это то, что вы хотите установить, если вам нужна загрузка во время выполнения. Каталог можно загрузить в загрузчик Prim:

catalog = Microsoft.Practices.Prism.Modularity.ModuleCatalog.CreateFromXaml(new Uri("Modules.xaml", UriKind.RelativeOrAbsolute));

Тогда все, что вам нужно сделать для загрузки вашего модуля, это получить ссылку на IModuleManager (Dependency Injection, yay!) И загрузить модуль:

if (loadModule1)
    var myModule = moduleManager.LoadModule("Module1");

Теперь модуль известен Prism. Помните, что выгрузка не поддерживается Prism.

...