Skip to content

Prism8 IDialog加载视图跳转

约 384 字大约 1 分钟

prismWPF

2024-01-25

需求

IDialogAware中实现弹窗出其他页面

  • 实现:通过通过prism:Region定义一个区域,在跳转时使用导航IRegionManager跳转<ContentControl Margin="30" prism:RegionManager.RegionName="PopWindowContainer"/>
  • 问题:无法通过prism:Region的方式无法在IRegionManager中拿到区域,导致无法二次导航或触发 viewmodel 的接口

换方式:通过 MVVM 绑定的形式

使用<ContentControl Margin="30" Content="{Binding PopWindow}"/>,将 UserControl 传递过来 绑定!

新问题

无法传递参数到页面 换方式,通过反射来拿到 viewmodel,调用弹窗页面继承的抽象类中的函数(规定弹窗页的函数实现统一格式)

参数可以传递,但是页面统一性的问题,view 与 viewmodel 都获取到了 但是他们是单独的对象 没有意义,调用了 viewmodel 的函数,view 并不相关?怎么处理

prism 跨 region 竟然无法触发导航事件,??? 大概是RegionManager.SetRegionManager();设置主域的原因,未验证 用事件吧简单粗暴

验证:

  • 由于之前的绑定都是隐形绑定,没有去RequestNavigate() 触发导航的动作,导致无法执行到事件
  • _regionManager.RequestNavigate("region", viewurl);