Учитывая, что у меня есть приложение оболочки и несколько отдельных проектов модулей с использованием Microsoft CompoisteWPF (Prism v2) ...
При получении команды модуль создает новую 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>
Редактировать:
Я могу заставить его работать, добавив в 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>
Это нормально, но это означает, что по мере создания новых модулей необходимо добавлять файл App.xaml. Я ищу способ для модулей, загружаемых для динамического добавления в Application.Resources. Это возможно?