1、创建WPF应用程序Modules,创建类库ModuleA。在Modules的bin目录下创建文件夹Modules,并将ModuleA的生成路径设置为Modules文件夹。
2、在Modules中,将App.xaml中的StartupUri="MainWindow.xaml"删除。
3、在Modules中,使用NuGet安装Prism.Wpf、Prism.Core、Prism.Unity。
4、在Modules中,添加类“Bootstrapper”,编辑如下:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using System.Windows; 7 using Modules.Views; 8 using Prism.Unity; 9 using Microsoft.Practices.Unity;10 using Prism.Modularity;11 12 namespace Modules13 {14 class BootStarpper:UnityBootstrapper15 {16 protected override DependencyObject CreateShell()17 {18 return Container.Resolve();19 }20 21 protected override void InitializeShell()22 {23 Application.Current.MainWindow.Show();24 }25 26 protected override IModuleCatalog CreateModuleCatalog()27 {28 return new DirectoryModuleCatalog() { ModulePath = @".\Modules" }; 29 30 }31 }32}
5、MainWindow.xaml代码如下:
110 11 1312
6、修改App.xaml。
1 using System; 2 using System.Collections.Generic; 3 using System.Configuration; 4 using System.Data; 5 using System.Linq; 6 using System.Threading.Tasks; 7 using System.Windows; 8 9 namespace Modules10 {11 ///12 /// App.xaml 的交互逻辑13 /// 14 public partial class App : Application15 {16 protected override void OnStartup(StartupEventArgs e)17 {18 base.OnStartup(e);19 20 var bootStarpper=new BootStarpper();21 bootStarpper.Run();22 }23 }24 }
7、在ModuleA中,创建ModuleAModule.cs,代码如下:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using ModuleA.Views; 7 using Prism.Modularity; 8 using Prism.Regions; 9 10 namespace ModuleA11 {12 public class ModuleAModule:IModule13 {14 IRegionManager _regionManager;15 16 public ModuleAModule(RegionManager regionManager)17 {18 _regionManager = regionManager;19 }20 21 public void Initialize()22 {23 _regionManager.RegisterViewWithRegion("ContentRegion", typeof(ViewA));24 }25 }26 }
8、ViewA.xaml
19 10 1211
9、Modules中修改App.config文件,代码如下:
1 23 4 65