2012-10-22 30 views

回答

0

這似乎不可能。如果您想完全清除回棧(例如,如果您有「主」按鈕),則可以使用網格示例應用程序中LayoutAwarePage.cs文件中提供的代碼。

if (this.Frame != null) 
{ 
    while (this.Frame.CanGoBack) this.Frame.GoBack(); 
} 

雖然這實際上並不清除棧,它帶你回到程序的起始位置,不會有進一步的列表返回方向的條目。如果您想通過按下按鈕退出死衚衕的頁面,則可以修改此行爲以退回多頁並有效刪除後退條目。

1
frame.SetNavigationState("1,0"); 

將清除您的導航歷史記錄。

+0

這個據我可以告訴爲我工作。我用這個技巧刪除了我的Windows 8應用程序的第一頁。在導航離開該頁面之前,我使用了這一行代碼。我在其他幾個地方首先嚐試了它,例如下頁的LoadState,它有一些奇怪的副作用。 – benb1n

+0

這完全清除了導航狀態,這可以像ZombieSheep建議的那樣乾淨得多。但是它不會像問題所暗示的那樣從堆棧中刪除最近的一個頁面。 –

1

我發現這個答案有用:

How to clear Backstack of the frame and start afresh

寫自己的NavigationService和navigationstate存儲在構造函數中。

string state; 

public NavigationService(Frame mainFrame) 
{ 
    state = mainFrame.GetNavigationState(); 

_mainFrame = mainFrame; 
_mainFrame.Navigating += _mainFrame_Navigating; 
} 

然後實現在服務這個方法並在需要時調用它:

public void ClearBackstack() 
    { 
     _mainFrame.SetNavigationState(state); 
    } 
相關問題