Prism RegionManager Navigation导航功能
Prism RegionManager Navigation 导航功能
这段时间写这个WPF啊,脱离了Prism MVVM还真有点玩不转,老老实实回归MVVM了,以后可能试试别的框架,总之他这个事件订阅功能确实是很好用,然后在Prism的RegionManager这一块折腾了很久
简单来说,这个IRegionManager是继承了RegionManager的一个类,它可以通过依赖注入的方式导航UserControl,相当于降低了代码的耦合度,便于维护
具体流程
在app.xaml.cs里重写RegisterTypes
1 | protected override void RegisterTypes(IContainerRegistry containerRegistry) |
注册了这几个View
随后你需要在对应的xaml页面上写上Content Control
1 | <ContentControl prism:RegionManager.RegionName="MainRegion"/> |
需要声明好prism的命名空间,还要打开自动绑定View和ViewModel,这里把两个文件保存在两个目录里,名为Views和ViewModels,同时名字也是AView和AViewModel
1 | xmlns:prism="http://prismlibrary.com/" |
然后你得在后端的ViewModel里初始化IRegionManager
1 | private readonly IRegionManager regionManager; |
随后进行导航
1 | regionManager.Regions["MainRegion"].RequestNavigate("ViewA"); |
错误
我在导航这一步一直提示没有找到MainRegion这个Region名,我的依赖注入也是对的,不知道为什么谔谔,在后面修好了可能还会发
我使用一下方法来绕过这个问题:
1 | regionManager.RegisterViewWithRegion("MainRegion", typeof(AView)); |
这一步相当于初始化了Content Control,随后可以导航
1 | regionManager.RequestNavigate("MainRegion", "BViewView"); |
可能是我没有先注册吗?
浅谈我在折腾子窗口时的想法
原本设想的是弹出一个新窗口之后两个窗口一起去处理事情,但是貌似在MVVM的设计中,没有查到什么相关的文章;MVVM设计貌似更偏向于使用导航的方式去处理各种页面,以后进一步去研究
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 KLTN-涛飻!