当前位置: 首页 > news >正文

prism框架

1.prism 框架在VS中可以安装模板,这样使用起来方便

image

 2.DI(依赖注入)

以下是框架内自动注入的,也就是说在ViewModel中的构造函数可以直接使用,不需要再APP.CS中注册

比如像这个样,构造函数可以随便使用

 public MainWindowViewModel(IRegionManager regionManager, IModuleManager moduleManager, IEventAggregator eventAggregator, IDialogService aaa)

 

类别具体内容(按平台)生命周期核心用途
核心内置服务(全平台) IEventAggregator(事件聚合器) 单例 跨组件通信
  INavigationService(导航服务) 瞬时 页面 / View 导航
  IDialogService(弹窗服务) 单例 标准化弹窗管理
  IContainerRegistry/IContainerProvider(DI 容器接口) 单例 注册 / 解析服务
WPF 专属内置服务 IRegionManager(区域管理器) 单例 管理 WPF 的 Region 容器
  IModuleManager/IModuleCatalog(模块管理) 单例 模块化加载 / 管理
框架内部基础设施 ViewModelLocator、导航管道、容器内部组件 内部管理 框架底层运行(无需关注)

 

还有一种自定义的方式需要手动注册,再App.cs中

containerRegistry.Register<IUserService, UserService>(); // 瞬时(默认)
containerRegistry.RegisterSingleton<ISettingsService, SettingsService>(); // 单例
containerRegistry.Register<LocalDataCache>(); // 无接口的具体类型

3. View 与 ViewModel 的自动关联注册

如果 View(OrderView)和 ViewModel(OrderViewModel)满足「同命名空间 + View 后缀 / ViewModel 后缀」,Prism 的ViewModelLocator可自动关联,无需手动注册;

但是prism项目模板是不在同一个命名空间内,二十遵循了精准利用了 Prism 的扩展约定。

prism:ViewModelLocator.AutoWireViewModel="True"    这个二是自动关联开关;绑定上下文

小技巧添加以下代码,可再Xaml界面中使用转到定义功能

<!-- 1. 引入设计时命名空间(固定) -->xmlns:d="http://schemas.microsoft.com/expression/blend/2008"<!-- 2. 引入ViewModel命名空间(替换为你的实际命名空间) -->xmlns:vm="clr-namespace:YourApp.ViewModels"<!-- Prism自动装配(运行时生效) -->prism:ViewModelLocator.AutoWireViewModel="True"<!-- 3. 设计时DataContext(仅给VS看,不影响运行) -->d:DataContext="{d:DesignInstance Type=vm:OrderViewModel, IsDesignTimeCreatable=False}"

4.

4. 对话框(Dialog)注册

使用IDialogService的弹窗,必须手动注册:
// 注册对话框View+ViewModel
containerRegistry.RegisterDialog<ConfirmDialogView, ConfirmDialogViewModel>();// 注册带自定义弹窗样式的对话框(WPF)
containerRegistry.RegisterDialog<EditDialogView, EditDialogViewModel>("EditDialog");

 

5. 模块化注册

自定义模块(IModule实现类)需要手动注册,才能被框架加载:
// WPF:App.xaml.cs
protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog)
{// 注册启动时加载的模块moduleCatalog.AddModule<UserModule>();// 注册按需加载的模块moduleCatalog.AddModule<OrderModule>(initializationMode: InitializationMode.OnDemand);
}

6. 第三方组件 / 服务

// 注册HttpClient(单例)

containerRegistry.RegisterSingleton(() => new HttpClient { BaseAddress = new Uri("https://api.example.com") });

// 注册数据库上下文

(DbContext) containerRegistry.Register<AppDbContext>();

http://www.zskr.cn/news/135545.html

相关文章:

  • 2025年高颜值玻璃隔断定制品牌排行榜,办公室隔断墙/电动门/感应门/酒店隔断/全景玻璃隔断/办公室隔断/调光玻璃隔断玻璃隔断厂家推荐 - 品牌推荐师
  • Open-AutoGLM会话泄漏终极解决方案:从原理到实践一步到位
  • 2025储配液袋厂家大盘点:哪些品牌及储液袋产品值得推荐 - 品牌推荐大师1
  • IT转行首选网络安全?究竟是怎么回事?
  • 2025文山交通事故律师推荐指南哪家靠谱律师团队值得关注 - 资讯焦点
  • Java Web +疫情物资捐赠和分配系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】
  • OCCT 实战(5)AIS | 5.1、AIS_InteractiveObject 类
  • 投保流程卡顿频发?Open-AutoGLM智能诊断系统来了,立即解决!
  • github 镜像网站推荐,解决 github 打不开
  • Open-AutoGLM单据提交倒计时:月底前必须掌握的5项提报技能
  • WordPress电商插件高危漏洞:WCFM Marketplace授权缺失可致数据泄露
  • awk命令学习总结
  • (Open-AutoGLM认证失败应急方案)生产环境必备的4个容错技巧
  • 任务卡死不再重启!Open-AutoGLM中断恢复核心机制深度解读,省下80%计算成本
  • Open-AutoGLM多模态能力升级:5大关键技术解析与应用场景落地指南
  • 【内部流出】大厂员工都在用的Open-AutoGLM打卡配置模板(限时分享)
  • 公司监控越来越严,Open-AutoGLM还能安全打卡吗?(最新检测机制分析)
  • PPO算法训练选择合适的动作空间
  • 告别高价进口:国产平行反应釜靠谱厂家推荐 - 品牌推荐大师
  • GPU的时钟频率与功耗管理(Boost Clock, TDP)
  • JetBrains2021系列软件安装激活通用教程
  • 2025装配式低能耗地暖模块TOP5权威推荐:甄选源头工厂,助力建筑高效节能升级 - 工业推荐榜
  • GPU的PCIe总线:带宽对性能的影响
  • 【Open-AutoGLM认证失败处理优化】:3大核心策略助你提升系统稳定性
  • 完整教程:【Linux】基础开发工具(2):vim补充说明gcc/g++编译器
  • 一站式VR全景建站系统,开源可定制,赋能多行业打造沉浸式数字展示平台
  • 31、深入解析Windows Server虚拟化与负载均衡技术
  • 打造本地生活服务新平台!开源微同城系统助力轻松创业
  • 50、网络连接、DNS 管理与网络安全全解析
  • 前端新人必看:HTML5表格也能做圆角?实战技巧全解析