c# – MvvmCross 5导航服务中的片段初始化顺序
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – MvvmCross 5导航服务中的片段初始化顺序,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1877字,纯文字阅读大概需要3分钟。
内容图文
我对MvvmCross 5中引入的导航服务有疑问.
在第4版中:
>我使用ShowViewModel< ViewModel>()导航到片段
>然后调用ViewModel的Init方法
>之后调用Fragment的OnCreateView方法
>在那里,我可以基于ViewModel数据操作视图(例如,向视图添加特定元素).
在第5版中:
>我导航等待NavigationService.Navigate< ViewModel>()
>首先调用片段的OnCreateView
>之后是ViewModel的Initialize方法.
>在创建Fragment视图时,这不会以ViewModel数据结束.
这是一个错误还是异步导航的功能?
如果需要,是否有更好的方法来基于ViewModel数据操作Fragment视图?
解决方法:
Is this a bug or a feature of async navigation?
这是设计,但从那以后(v5.0.4)进行了修订,见下面的流量变化.
If that is so wanted, is there a better way to manipulate the Fragment
view based on ViewModel data?
使用v5.0.4应该产生您期望的行为.在ViewModel的Initialize()等待导航服务完成之前,在启动视图生命周期事件之前完成.
MvvmCross v5.0.0 – v5.0.3
您看到的行为出现在MvvmCross 5.0.0-5.0.3中.流程如下:
> ViewModel.Ctor
>(选择导航调用)Init(参数)(不推荐使用反射,而是使用类型安全初始化)
>(选定的导航调用)ViewModel.ReloadState(savedState)
>(选定的导航调用)ViewModel.Start()
> BeforeNavigate(NavigationService事件)
> * ViewDispatcher.ShowViewModel()(触发器视图生命周期)
> * ViewModel.Initialize()
> AfterNavigate(NavigationService事件)
> BeforeClose(NavigationService事件)
> ViewDispatcher.ChangePresentation()
> AfterClose(NavigationService事件)
MvvmCross v5.0.4
v5.0.4改进了流程并更改了导航顺序:
> ViewModel.Ctor
> BeforeNavigate(NavigationService事件)
> * ViewModel.Initialize()
> Init(参数)(不推荐使用反射,而是使用类型安全的Initialize)
> ViewModel.ReloadState(savedState)
> ViewModel.Start()
> * ViewDispatcher.ShowViewModel()(触发器视图生命周期)
> AfterNavigate(NavigationService事件)
> BeforeClose(NavigationService事件)
> ViewDispatcher.ChangePresentation()
> AfterClose(NavigationService事件)
附加信息
您可以查看导航订单中记录的GitHub问题(#1968).此外,您可以查看更新版本5.0.4的初始化顺序的拉取请求(#1971).
内容总结
以上是互联网集市为您收集整理的c# – MvvmCross 5导航服务中的片段初始化顺序全部内容,希望文章能够帮你解决c# – MvvmCross 5导航服务中的片段初始化顺序所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。