WPF模块化

发布时间:2026/7/22 4:23:55
WPF模块化 WPF目录结构如下其中PrismModule调用ModuleA进行窗体显示首先Module类要实现IModule接口(需要引用Prism.Core模块)其实主项目要注册Module类有以下4种方式引用第1种PrismModule直接项目引用ModuleA,在ConfigureModuleCatalog中注册Module代码如下protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog) { moduleCatalog.AddModuleAModule(); } 或 protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog) { Type type typeof(AModule); moduleCatalog.AddModule(new ModuleInfo { ModuleName type.Name, ModuleType type.AssemblyQualifiedName, InitializationMode InitializationMode.OnDemand//OnDemand表示按需加载WhenAvailable表示启动时加载 }); }第2种使用App.config注册module第一步App.conf中声明module?xml version1.0 encodingutf-8 ? configuration configSections section namemodules typePrism.Modularity.ModulesConfigurationSection,Prism.Wpf / /configSections modules module assemblyFileZhaoXi.PrismModule.ModuleA.dll moduleNameAModule moduleTypeZhaoXi.PrismModule.ModuleA.AModule, ZhaoXi.PrismModule.ModuleA, Version1.0.0.0, Cultureneutral, PublicKeyTokennull /module /modules /configuration第2步代码中进行App加载protected override IModuleCatalog CreateModuleCatalog() { return new ConfigurationModuleCatalog(); }第3种使用xml注册module(这种最鸡肋,除了xml中声明Module还要项目引用module)第一步随便新建一个xml声明Module内容如下?xml version1.0 encodingutf-8 ? p:ModuleCatalog xmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentation xmlns:xhttp://schemas.microsoft.com/winfx/2006/xaml xmlns:pclr-namespace:Prism.Modularity;assemblyPrism.Wpf p:ModuleInfo ModuleNameAModule ModuleTypeZhaoXi.PrismModule.ModuleA.AModule, ZhaoXi.PrismModule.ModuleA, Version1.0.0.0, Cultureneutral, PublicKeyTokennull /p:ModuleInfo /p:ModuleCatalog注意新建的XML必须设置【复制到输出目录】为【不复制】【生成操作】为资源。第二步引用模块第三步代码中进行Xml加载模块protected override IModuleCatalog CreateModuleCatalog() { return new XamlModuleCatalog(.\\ModuleConfig.xml); }第4种自动扫描(这种最简单方便)第一步在Debug下新建文件夹ModulePath(文件名随便)第二步声明这个目录下的模块自动引用以后有模块加进来只要往这个目录丢会自动注册protected override IModuleCatalog CreateModuleCatalog(){return new DirectoryModuleCatalog() { ModulePath .\Modules };}小技巧1如果想每次生成的Module的dll自动更新到启动项目的目录下可以在Module的生成后事件中加入以下命令xcopy $(TargetPath) $(SolutionDir)Zhaoxi.PrismModule\bin\Debug\net7.0-windows\$(TargetFileName) /y小技巧2设置Module懒加载prism模块划分可以看功能划分Module,也可以按公共服务Module、业务逻辑Module,UI的Module.