【问题标题】:Prism for Xamarin.Forms NavigationService OnNavigatedFrom/OnNavigatedToPrism for Xamarin.Forms NavigationService OnNavigatedFrom/OnNavigatedTo
【发布时间】:2016-10-03 14:50:42
【问题描述】:

我们正在尝试使用 OnNavigatedFrom 和 OnNavigatedTo,但在需要时未调用“OnNavigatedTo”

ViewModelOne:

_navigationService.NavigateAsync("ViewModelPageTwo", useModalNavigation: false);

ViewModelTwo:

var parameters = new NavigationParameters()
            {
                {
                    "Pesquisa",
                    TextoPesquisa
                },
                {
                    "DataEnvioInicial",
                    DataEnvioInicio
                },
                {
                    "DataEnvioFim",
                    DataEnvioFim
                },
                {
                    "DataHistoricoInicio",
                    DataHistoricoInicio
                },
                {
                    "DataHistoricoFim",
                    DataHistoricoFim
                },
                {
                    "TodasAsCaixas",
                    PesquisaEmTodasCaixas
                }
            };

            _navigationService.GoBackAsync(parameters);

问题是 ViewModelOne -> OnNavigatedTo 在来自 ViewModelTwo 的 GoBackAsync 时没有触发

【问题讨论】:

  • 需要更多信息来帮助您缩小问题范围。首先,您使用的是哪个版本的 Prism for Xamarin.Forms。您使用的是什么版本的 Xamarin.Forms。您当前的导航堆栈的结构是什么?上一页是什么类型的页面?你什么时候打电话给 GoBackAsync?请提供更多详细信息。
  • @BrianLagunas Xamarin.Forms:2.3.1.114 |棱镜:6.2.0。结构是: MasterDetailPage 是 MainPage,在带有 TabbedPage 的 NavigationPage 内部,在 TabbedPage 内部,我们有 ViewModelOne 作为子级,正在制作 _navigationService.NavigateAsync("PageTwo", useModalNavigation: false)... 当 PageTwo GoBackAsync 方法 OnNavigatedTo在 ViewModelOne 中没有被触发。
  • 所以您正在从 TabbedPage 内的 Page 导航到 PageTwo,它位于 nvigationPage 内?这是一个非常有趣且令人困惑的页面层次结构。我不确定我是否有一个清晰的理解,但是尝试将 INavigationAware 放在 TabbedPageViewModel 上,看看它是否会出现。
  • 是的,当 GoBackAsync 访问我的 TabbedPage 时...我认为当我制作 _navigationService.NavigateAsync("ViewModelPageTwo", useModalNavigation: false);我在同一个导航...有办法点击我的 ViewModelOne 吗?谢谢@BrianLagunas

标签: xamarin.forms prism


【解决方案1】:

所以发生的情况是,当您调用 GoBackAsync 时,您实际上是返回到 TabbedPage,而不是实际的 Tab。现在,您可以在实际的 TabbedPage 上实现 INavigationAware,然后在代码隐藏中将您的参数传递给所选 Tab 的 VM。不是最佳的,但它现在可以工作。实际上在 GitHub 网站上有一个讨论,讨论了在导航期间处理 TabbedPages 及其子项时的各种问题。你可以在这里关注它:

https://github.com/PrismLibrary/Prism/issues/650

【讨论】:

  • 好的,我会等待相关消息,现在我会按照您所说的“解决方法”,感谢您的快速和大力帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-26
  • 2018-10-19
  • 1970-01-01
  • 2016-09-11
  • 2013-09-25
  • 2023-03-15
  • 2014-10-02
相关资源
最近更新 更多