从PRISM开始学WPF(四)Prism-Module?
2021-04-06 18:28
标签:aml eww oid inf encoding 管理 用户控件 tag cep 从PRISM开始学WPF(一)WPF? 从PRISM开始学WPF(二)Prism? 从PRISM开始学WPF(三)Prism-Region? 从PRISM开始学WPF(四)Prism-Module? 从PRISM开始学WPF(五)MVVM(一)ViewModel? 从PRISM开始学WPF(六)MVVM(二)Command? 从PRISM开始学WPF(七)MVVM(三)事件聚合器EventAggregator? Modules是能够独立开发、测试、部署的功能单元,Modules可以被设计成实现特定业务逻辑的模块(如Profile Management),也可以被设计成实现通用基础设施或服务的模块(如Logging、Exception Management)。 既然Modules能够独立开发、测试、部署,那么如何告诉Shell(我们的宿主程序)去Load哪些Module,以怎样的形式Load这些Module呢?Prism为此提供了一个叫ModuleCatalog的东西。他用这个来管理Module。所以在App启动之初,需要创建配置一个ModuleCatalog。 在Views文件夹下面新建一个用户控件ViewA 新增一个类 他通过View Discovery的方式,将ModuleA的ViewA与_regionManager(这里是依赖注入)的Region"ContentRegion"进行关联。 那么,ModuleCatalog是怎样让Shell加载ModuleA的呢?,,???,, 先在shell所在module添加ModuleA引用,然后: 啊妹子,炒鸡简单有没有? 这表示,ModuleCatalog将从配置文件中创建。 App.config中添加了 通过配置文件来配置ModuleCatalog就不需要添加ModuleA引用了 从PRISM开始学WPF(四)Prism-Module? 标签:aml eww oid inf encoding 管理 用户控件 tag cep 原文地址:https://www.cnblogs.com/lonelyxmas/p/9131405.html0x4Modules
?:
先新增一个WpfApp项目,命名ModuleA,删除App.config和App.xaml,然后将outputType改为Class Library。ModuleAModule.cs
实现IModule接口(每一个Module类都要实现这个接口,而每一个Module都要有这样一个类来对Module里的资源统一管理)using ModuleA.Views;
using Prism.Modularity;
using Prism.Regions;
namespace ModuleA
{
public class ModuleAModule : IModule
{
IRegionManager _regionManager;
public ModuleAModule(RegionManager regionManager)
{
_regionManager = regionManager;
}
public void Initialize()
{
_regionManager.RegisterViewWithRegion("ContentRegion", typeof(ViewA));
}
}
}
代码
Bootstrapper.cs
中重写ConfigureModuleCatalog
: protected override void ConfigureModuleCatalog()
{
var catalog = (ModuleCatalog)ModuleCatalog;
catalog.AddModule(typeof(ModuleAModule));
}
配置文件
Bootstrapper.cs
中重写CreateModuleCatalog
: protected override IModuleCatalog CreateModuleCatalog()
{
return new ConfigurationModuleCatalog();
}
Directory这个很尴尬,我调试一直不通过,辣鸡(●‘?‘●)LoadManual
Bootstrapper.cs
中重写ConfigureModuleCatalog
: protected override void ConfigureModuleCatalog()
{
var moduleAType = typeof(ModuleAModule);
ModuleCatalog.AddModule(new ModuleInfo()
{
ModuleName = moduleAType.Name,
ModuleType = moduleAType.AssemblyQualifiedName,
InitializationMode = InitializationMode.OnDemand
});
}
文章标题:从PRISM开始学WPF(四)Prism-Module?
文章链接:http://soscw.com/index.php/essay/72118.html