2016-10-03 32 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

好吧,我會等待一些有關這方面的消息,現在我會做你說的「解決方法」,謝謝你的快速和很大的幫助 –