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

国投集团网站开发杭州网站界面设计

国投集团网站开发,杭州网站界面设计,快速搭建展示型网站,企业网站优化搜行者seo前文本篇文章主要讨论在WPF当中使用Prism区域导航的失效的问题, 在其它的博客当中也出现了多次讨论这个问题以及对应的解决方法,例如重写OnInitialized方法等等。我认为这都不是解决问题的根源, 既然如此, 下面我们将来分析Prism的IRegionManager的具体流程。Prism初始化过程首… 前文本篇文章主要讨论在WPF当中使用Prism区域导航的失效的问题, 在其它的博客当中也出现了多次讨论这个问题以及对应的解决方法,例如重写OnInitialized方法等等。我认为这都不是解决问题的根源, 既然如此, 下面我们将来分析Prism的IRegionManager的具体流程。Prism初始化过程首先, 我们分析一下下面的代码, 用于创建应用程序的主页protected override Window CreateShell(){return Container.ResolveMainWindow();}那么, 在这个MainWindow当中, 如果我们定于以下一个区域, 则可以使用IRegionManager进行导航操作, 如下所示:ContentControl Grid.Row1 prism:RegionManager.RegionNameShowRegion /现在问题就来了, 一旦我们把这个窗口的实例销毁, 自己重新创建一个MainWindow的时候, 你会发现你无法进行导航了, 这个时候就是大家理解的那个问题, 是Region失效了并不是, 为了解决这个问题, 我们需要了解Prism框架本身做了什么动作, 查看源代码之后, 发现以下初始化代码:var shell CreateShell(); if (shell ! null){MvvmHelpers.AutowireViewModel(shell);RegionManager.SetRegionManager(shell, _containerExtension.ResolveIRegionManager());RegionManager.UpdateRegions();InitializeShell(shell);}了解到, 从一开始获取到MainWindow之后, 陆续进行了上下文绑定, 设置IRegionManager实例以及更新区域的操作。在这里, 我们至少了解了几个东西。MainWindow的DataContext初始化的时机MainWindow窗口当中IRegionManager的初始化过程区域刷新的动作完成了这些动作之后, 最终ShowDialog展示了首页, 于是,我们可以在这里愉快的使用IRegionManager进行导航操作。分析结果如果想要实现在某个窗口当中进行导航, 除了定义区域之外, 你还需要做的就是给窗口设置IRegionManager的实例以及刷新区域, 核心就是这两行代码:RegionManager.SetRegionManager(shell, _containerExtension.ResolveIRegionManager());RegionManager.UpdateRegions();既然我们了解到这个之后, 还有一个问题也顺其自然的解决了, 在Prism当中使用弹窗服务不能导航的问题, 因为在Prism框架提供的IDialogService中并没有实现设置IRegionManager以及刷新区域, 这就是问题的根源, 所以我们必须手动的去修改实现达到支持导航的功能。弹窗中实现导航示例: 以下代码, 展示了如何在弹窗当中设置区域以及刷新区域的问题。var provider ContainerLocator.Container.ResolveIContainerProvider();var regionManager ContainerLocator.Container.ResolveIRegionManager();var win provider.Resolveobject(ShowWindow);if (win is Window view){RegionManager.SetRegionManager(view, regionManager);RegionManager.UpdateRegions();view.ShowDialog();}当然, 你完全可以自行实现IDialogService接口覆盖Prism提供的内部实现, 以达到弹窗支持导航的行为, 例如:public interface IMyDialogService : IDialogService{}public class MyDialogService : DialogService, IMyDialogService{public MyDialogService(IContainerExtension containerExtension): base(containerExtension){}public new void ShowDialog(string name, IDialogParameters parameters, ActionIDialogResult callback){//...}}总结对于任何窗口, 我们都可以使用IRegionManager进行导航操作, 在第一次框架初始化的时候, 只不过是Prism内部帮我们处理了区域的设置以及刷新行为。而如何我们想在其它地方使用区域导航, 则需要手动设置区域以及刷新区域即可。
http://www.zqtcl.cn/news/573090/

相关文章:

  • 国外互动网站wordpress设置用户头像
  • 重庆手机网站推广定做net创建网站之后怎么做
  • 网站仿静态做it的兼职网站
  • 建站用wordpress好吗hui怎么做网站
  • 从用户旅程角度做网站分析做网站还是做淘宝
  • 妇科医院网站优化服务商品牌型网站设计推荐
  • 西安网站制作排名网站建设对企业的帮助
  • lamp网站开发 pdf纯html5 网站
  • 白云区同和网站建设购物网站怎么建立
  • 公司制作网站需要espcms易思企业网站管理系统
  • 开发一个网站需要哪些步骤广西建设主管部门网站
  • 网站建设培训西安制作微信小程序开发
  • delphi 做直播网站wordpress 商务
  • 各大网站的软文怎么做wordpress教程菜鸟教程
  • 破解php网站后台账号密码wordpress二维码 插件下载
  • 石家庄哪里可以做网站做网站用的pm是啥
  • 租服务器网站有趣的设计网站
  • 建设部监理网站官网信阳市两学一做网站
  • 网站被攻击会影响收录么微信网站 影楼
  • 社区网站开发search搜索引擎
  • 章丘做网站哪家强原阳网站建设
  • 做网站前期构架图中国建设银行手机银行网站
  • tp5企业网站开发百度云青岛vi设计公司
  • 网站建设实验原理建站之星 discuz
  • 购物网站如何备案建设部施工合同范本
  • 网站模板安装建站之星凡客
  • 有没有电脑做兼职的网站吗网站和域名区别
  • 免费html网页模板素材网站修改wordpress后台登陆
  • 男女做啊免费视频网站网站做全景图
  • 网站域名 安全网站开发语言一般是用什么