一、新建模块
(1)项目中新添项目,然后删除App.xmal和MainWindow.xmal。
(2)将属性中的输出类型改为类库。
(3)新建ModuleAProfile.cs类,在类中继承并实现IModule接口:
namespace ModuleA
{
public class ModuleAProfile : IModule
{
public void OnInitialized(IContainerProvider containerProvider)
{
}
public void RegisterTypes(IContainerRegistry containerRegistry)
{
//注册页面A
containerRegistry.RegisterForNavigation<ViewA>();
}
}
}
二、加载模块
(1)在依赖项处直接引用模块,后用在App.xmal.cs中使用代码加载:
protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog)
{
//在依赖项里添加项目引用后,使用代码添加模块
moduleCatalog.AddModule<ModuleAProfile>();
moduleCatalog.AddModule<ModuleBProfile>();
base.ConfigureModuleCatalog(moduleCatalog);
}
(2)使用模块的地址加载,在App.xmal.cs中:
protected override IModuleCatalog CreateModuleCatalog()
{
return new DirectoryModuleCatalog() { ModulePath = @".\Modules" };
}
(3)其他加载方式
配置文件加载、xmal加载:可参考github代码demo。