2016-10-03 36 views
0

我们试图用OnNavigatedFrom和的OnNavigatedTo但 “的OnNavigatedTo” 在需要的时候不叫棱镜的Xamarin.Forms的NavigationService OnNavigatedFrom /的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不触发时

+0

多很多的信息需要,以帮助你缩小你的问题。首先,您使用的是Xamarin.Forms的Prism版本。你使用的是什么版本的Xamarin.Forms。当前导航堆栈的结构是什么?上一页是什么类型的页面?你什么时候打电话GoBackAsync?请提供更多细节。 –

+0

@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中未被触发。 –

+1

因此,您是从TabbedPage内的页面导航到PageTwo,它位于nvigationPage内部?这是一个非常有趣和令人困惑的页面层次结构。我不确定自己有什么清楚的理解,但可以尝试将TabViewPageViewModel上的INavigationAware放置在它上面,看看它是否在那里。 –

回答

1

所以,当你调用GoBackAsync时,你实际上会回到TabbedPage,而不是实际的Tab。现在,您可以在实际的TabbedPage上实施INavigationAware,然后将您的参数传递给代码隐藏中选定的选项卡的虚拟机。不是最优的,但它现在可以工作。实际上,有关GitHub网站的讨论讨论了在处理TabbedPages及其导航期间的儿童时出现的各种问题。你可以在这里按照它:

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

+0

好吧,我会等待一些有关这方面的消息,现在我会做你说的“解决方法”,谢谢你的快速和很大的帮助 –