2012-07-23 50 views
0

我有一個viewmodel綁定到一個區域使用的視圖。我試圖找到一種方式,當該視圖從特定視圖導航到時(例如視圖A),它在內部執行一些工作,例如初始化一些列表,設置一些東西,無論如何。但是如果它已經從視圖B導航到了,它不需要重新初始化所有的東西,只顯示它已有的數據。棱鏡導航 - 找出導航請求的來源?

我可以傳遞一個參數,我認爲這是一個新的操作,還是我們要回去工作,但我認爲如果我們來自這個我們做了一件事,如果我們來自那個,我們做另一件事。

如果是有道理的:)

回答

0

您可以實現INavigationAware接口,其中包含3種方法。其中一種方法是OnNavigatedTo方法。在那裏您可以訪問日誌並檢查當前條目。從那裏,你應該能夠確定它是否從View A或B.查看

public void OnNavigatedTo(NavigationContext navigationContext) 
{ 
    var journal = navigationContext.NavigationService.Journal; 
    //use journal.CurrentEntry 
} 
+0

我實現這個來了,正是在的OnNavigatedTo(),我需要這些信息。但據我所知,「日刊」並未提供訪問此導航來源的位置。它允許你去GoBack(),但不要問'Where is back'?而journal.CurrentEntry就是這樣,當前條目,即你現在所在的屏幕,而不是你來自的屏幕。 – Nicros 2012-07-24 16:06:03

+0

還有一件事你可以看看,那就是基於狀態的導航。我不知道棱鏡的那部分。現在您唯一的選擇是實施您自己的建議實施。 – 2012-07-24 18:10:17

+0

我只是跟參數一起去了 - 感覺有點討厭,我希望我可以訪問那些我知道在日誌...功能請求中的信息! – Nicros 2012-07-24 20:31:34