鉴于我有一个 shell 应用程序和几个使用 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。这可能吗?