目录
创建Prim应用程序
注:2345的顺序一定不要变,除非你喜欢把坑都走一遍😂
1.导入Prism.Unity包

2.App.xaml.cs改造
添加红色部分(先不要管报错)

3.App.xaml改造
加入红色部分,删除黄色部分

4.重新生成解决方案

5.实现抽象类中的抽象方法

恭喜你Prism应用已经创建完成了!
App.xaml.cs
RegisterTypes(服务注册函数)
该方法用于在应用启动时向依赖注入容器注册服务、视图、视图模型等类型,这样后续可以通过容器解析并自动注入这些对象。
csharp
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
// 注册单例服务
containerRegistry.RegisterSingleton<IMyService, MyService>();
// 注册瞬态服务
containerRegistry.Register<ILogService, LogService>();
// 注册视图用于导航
containerRegistry.RegisterForNavigation<HomeView, HomeViewModel>();
}
ConfigureModuleCatalog(模块管理函数)
用于管理模块化应用程序中的模块信息。它负责维护模块的注册、加载和初始化过程,确保模块之间的依赖关系被正确处理。
csharp
protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog)
{
// 注册模块 A 和模块 B
moduleCatalog.AddModule<ModuleA>();
moduleCatalog.AddModule<ModuleB>();
}
ConfigureRegionAdapterMappings(配置区域适配器映射
)
有一些控件RegionManager不识别就会导致RegisterviewWithRegion函数无法将内容加入到控件中
csharp
protected override void ConfigureRegionAdapterMappings(RegionAdapterMappings regionAdapterMappings)
{
base.ConfigureRegionAdapterMappings(regionAdapterMappings);
regionAdapterMappings.RegisterMapping< Ribbon, RibbonRegionAdapter>();
}
CreateShell(创建主窗口)
用于创建应用程序的主窗口
csharp
protected override Window CreateShell()
{
MainWindow userControl1 = Container.Resolve<MainWindow>();
// 订阅 Shell 加载完成事件
//userControl1.Loaded += OnShellLoaded;
return userControl1;
}
Adapter(适配器)
csharp
namespace Dome
{
public class RibbonRegionAdapter : RegionAdapterBase<Ribbon>
{
public RibbonRegionAdapter(IRegionBehaviorFactory regionBehaviorFactory) : base(regionBehaviorFactory)
{
}
protected override void Adapt(IRegion region, Ribbon regionTarget)
{
bool flag = region == null;
if (flag)
{
throw new ArgumentNullException("region");
}
bool flag2 = regionTarget == null;
if (flag2)
{
throw new ArgumentNullException("regionTarget");
}
region.Views.CollectionChanged += delegate(object s, NotifyCollectionChangedEventArgs e)
{
bool flag3 = e.Action == NotifyCollectionChangedAction.Add;
if (flag3)
{
foreach (RibbonTabItem item in e.NewItems)
{
regionTarget.Tabs.Add(item);
}
}
else
{
bool flag4 = e.Action == NotifyCollectionChangedAction.Remove;
if (flag4)
{
foreach (RibbonTabItem item2 in e.OldItems)
{
regionTarget.Tabs.Remove(item2);
}
}
}
};
}
protected override IRegion CreateRegion()
{
return new SingleActiveRegion();
}
}
}
Region(区域)
1.定义一个区域(这个区域可以显示其它页面)

2.将UserControl1界面在ContentRegion区域中显示

3.UserControl1界面

4.运行效果
