gpt4 book ai didi

xamarin.forms - Prism Forms INavigatedAware 和 INavigatingAware 之间的区别?

转载 作者:行者123 更新时间:2023-12-02 16:55:29 24 4
gpt4 key购买 nike

我在 Xamarin Forms 应用程序中使用 Prism Forms 7.x。到目前为止,我一直在 View 模型中使用 INavigatedAware 界面来检查是否发生了往返于相应 View 模型的导航。现在,我看到有 INavigatingAware,它只提供了 OnNavigatingTo 方法(所以,导航还没有完成)。

我关于 INavigatingAware.OnNavigatingTo 的问题:- 我可以在对 OnNavigatedFrom 调用不感兴趣的地方使用 INavigatingAware 吗?- 在 OnNavigatingTo 中加载数据(在设置 BindingContext 之前;这样例如数据绑定(bind)不需要更新两次)在性能方面是否更好?

很高兴分享您关于这两个界面的经验和最佳实践。

最佳答案

INavigatingAware.OnNavigatingTo 首次引入 Prism 以帮助开发人员执行类似于 ViewWillAppear 的初始化逻辑。

为了帮助更好地形象化这一点,NavigationService 中的事件看起来像这样:

  • 创建页面
  • 如果 ViewModelLocator.Autowire 属性为 null,则设置它
  • 应用来自 PageBehaviorFactory 的任何行为
  • 在我们导航离开的 Page/ViewModel 上调用 IConfirmNavigation.CanNavigate(它是异步对应项)
  • 调用 INavigatingAware.OnNavigatingTo
  • 将页面推送到 NavigationStack 上
  • 调用 INavigatedAware.OnNavigated{From|To}

重大变化

现在,综上所述,我们已经收到了大量关于 INavigatingAware 的反馈(这个问题的本质),由于来自 Prism 社区的大量反馈,INavigatingAware 在 Prism 7.2 中已经过时了。这意味着它已从 INavigationAware 中删除,如果直接实现它会抛出编译时错误。对于您从 INavigationAware 免费获得它的那些时间,它根本不会被调用。展望 future ,我们引入了一系列界面,使这更容易,并且更能 self 记录意图。

新接口(interface)和 API

  • 初始化.初始化
  • IInitializeAsync.InitializeAsync

新的 IInitialize 接口(interface)是 INavigatingAware 的直接替代品。我们很早就收到反馈,人们希望能够在初始化期间执行异步任务。这里的问题是,这可能会导致导航中出现非常明显的延迟,类似于 IConfirmNavigationAsync。如果您使用这些异步界面中的任何一个,您将需要确保在屏幕上包含某种忙碌/加载覆盖。

关于xamarin.forms - Prism Forms INavigatedAware 和 INavigatingAware 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56581785/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com