Учитывая то, что у меня есть приложение оболочки и несколько отдельных проектов модулей с использованием Microsoft CompoisteWPF (Prism v2) ...Композитный WPF (Prism) модуль ресурсов шаблоны данных
Получив команду, модуль создает новый ViewModel и добавляет его в регион через менеджера региона.
var viewModel = _container.Resolve<IMyViewModel>();
_regionManager.Regions[RegionNames.ShellMainRegion].Add(viewModel);
Я думал, что я мог бы создать словарь ресурсов внутри модуля и настроить шаблон данных для отображения представления для типа вида модели, который был загружен (см ниже XAML). Но когда модель представления добавляется в представление, все, что я получаю, это пространство имен моделей представлений.
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:vm="clr-namespace:Modules.Module1.ViewModels"
xmlns:vw="clr-namespace:Modules.Module1.Views"
>
<DataTemplate DataType="{x:Type vm:MyViewModel}">
<vw:MyView />
</DataTemplate>
</ResourceDictionary>
Edit:
я могу заставить его работать, добавляя к App.xaml
<Application.Resources>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Module1;component/Module1Resources.xaml"/>
<ResourceDictionary Source="pack://application:,,,/Module2;component/Module2Resources.xaml"/>
</ResourceDictionary.MergedDictionaries>
</Application.Resources>
Что это хорошо, но это означает, что новые модули созданы, приложение. Файл xaml должен быть добавлен. То, что я ищу, - это способ для модулей, поскольку они загружаются для динамического добавления в Application.Resources. Это возможно?
Первая часть вашего ответа требует, чтобы ваш модуль попал в приложение. Я бы порекомендовал против этого, поскольку он непроверяется. Второй подход более уместен. –