2012-12-14 38 views

回答

1

您可以使用GetNavigationState,但它有一些不良的副作用(它導航離開當前頁面,字符串內部沒有關於它可能/可能不會改變的保證)。我認爲你最好通過它。

調用此方法將使用NavigationMode.Forward調用當前的 頁的Page.OnNavigatedFrom。 GetNavigationState通常是 應用被掛起時調用,所以當前頁是從 導航了。

注:

這些 方法中使用的序列化格式是僅供內部使用。你的應用不應該對它產生任何 依賴關係。此外,該格式支持序列 只爲基本類型,如字符串,字符,數字和GUID類型。

2

請叫|上一頁Application對象的靜態屬性。在每一頁的OnNavigatedFrom事件(或基類)設置|上一頁爲「本」(當前頁面)。在OnNavigatedTo事件中,您可以檢查該Application.PreviousPage屬性並使用它看你是否適合。這是訪問上一頁的最有效方法,因爲Windows Store應用程序框架中沒有Frame.BackStack屬性。

0

我遇到了這個問題,Caleb的回答非常有幫助。我只想發佈一些代碼來闡明我如何使用他的解決方案。我很有點(很!)新的C#,我敢肯定有更好的方法來做到這一點,但我想提供它作爲一個起點,以防別人正在尋找一個一點點細節。

我創建的應用程序的命名空間的全局變量來保持前一頁面狀態:

public static class global_vals{ 
    static object _previousPage; 
    public static object previousPage 
    { 
     get 
     { 
      return _previousPage; 
     } 
     set 
     { 
      _previousPage = value; 
     } 
    } 
} 

對我的每一個頁面的OnNavigatedFrom方法看起來是這樣的:

protected override void OnNavigatedFrom(NavigationEventArgs e) 
{ 
    base.OnNavigatedFrom(e); 
    global_vals.previousPage = this; 
} 

而且的OnNavigatedTo方法像這樣檢查全局變量:

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    base.OnNavigatedTo(e); 
    if (global_vals.previousPage.GetType().ToString() == "AppName.SomePage") 
    { 
     //do something 
    } 
}