datagrid wpf 刷新数据_WPF开发中ViewModel相互传参和弹框回传参的解决办法

本文详细介绍了在WPF开发中,如何使用ViewModel进行参数传递,包括在打开模态窗口时的数据传递以及弹框后的回传参数。通过Prism的事件聚合机制,实现了跨页面通信,确保在验证通过后更新界面按钮状态。同时,文章提供了一个基于MVVM和Prism的WPF管理框架的实践示例。

7cc4feecf67e1077b943c3ea7d3e52cd.png
JHRS开发框架之ViewModel相互传参和弹框回传参的解决办法,这个系列的文章旨在记录工作中使用WPF开发新的医疗项目中,有感于必须统一掉一些规范上的事情,并且提高团队开发效率,遂折腾了这么一个半吊子的框架,这个标题WPF企业级开发框架搭建指南,2020从入门到放弃可能会唬住一些人,但看到这些零碎文字的朋友就凑和着看吧,如果能帮助到你,那也荣幸了。

继上一篇烂尾文章分享了一些WPF数据验证的话题,这一篇来说一下ViewModel相互传参的问题,这也是在搭建JHRS开发框架中遇到的一些问题,并把它封装了一下。

这个演示的WPF开发管理系统的框架是基于MVVM来搭建的,因此业务处理都是在ViewModel里面完成的,而在实际项目中,难免会有两个页面(Page)跳来跳去的,它们在跳来跳去的时候是需要传递参数的,因为在这个框架中引入了Prism,事情就变更加的简单了。为了方便描述呢,本文就将模态窗口称为弹框页面了。

ViewModel相互传参

常见的业务场景就是在管理页列页面中,点击表格里面(DataGrid)某一行数据的编辑按钮,进行编辑,这时就会跳转到另外一个页面或者使用模态窗口打开一个弹框页面,在这个页面上进行编辑操作,在跳转的时候就会将参数进行传递,不然怎么在新开的页面知道你要干嘛呢?

在ViewModel相互传参的时候,可以使用对象的方式,也可以使用基本类型进行传递;因为在BaseViewModel这个基类中提供了打开弹框(模态窗口)窗体的功能,并且提供了一个object对象,参数为args的可选参数,可用于传参,代码如下:

  /// <summary>
  /// 打开模态窗口
  /// </summary>
  /// <param name="page">内容页面</param>
  /// <param name="icon">图标</param>
  /// <param name="pageTitle">页面标题</param>
  /// <param name="args">页面传参</param>
  /// <param name="callback">关闭窗体后执行的回调函数</param>
  /// <param name="disableArea">是否禁用弹框页面的保存,取消区域(即隐藏保存,取消按钮)</param>
    protected void ShowDialog(string page, IconEnum icon, string pageTitle = "未设置标题", object args = null, Action<IDialogResult> callback = null, bool disableArea = false)
 {
      IDialogWindow dialogWindow = Container.Resolve<IDialogWindow>("dialog");
      dialogWindow.ConfigureDialogWindowEvents(callback);

      DialogParameters p
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值