2012-07-31 98 views
1

我有一個頁面調用WebBrowserTask。當用戶從瀏覽器返回時,我不想顯示啓動任務的頁面,而是顯示前一個。從導航堆棧中刪除當前頁面和WebBrowserTask

問題是導航堆棧不包含當前頁面,我無法將其從頁面中的條目中刪除,WebBrowserTask也不允許我們執行任何操作。

在Android上,我可以指定給定的Activity不會添加到後端堆棧中。有沒有這樣的事情?

目前,我發現幾乎做我想做的事情的唯一方法是在調用任務時設置一個標誌,並在頁面的OnNavigatedTo處理程序中檢查它。 但是在返回前幾秒鐘頁面仍然可見。這不好。

謝謝。

回答

0

我沒有測試過這一點,但你也許可以做到以下幾點

bool navigatedFromBrowser; 
public MainPage() 
{ 
    navigatedFromBrowser = false; 
} 
public void someMethod() 
{ 
    WebBrowserTask webBrowserTask = new WebBrowserTask(); 
    webBrowserTask.Uri = new Uri("http://msdn.microsoft.com", UriKind.Absolute); 
    webBrowserTask.Show(); 
    navigatedFromBrowser = true; 
} 
protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e) 
{ 
    if(navigatedFromBrowser && NavigationService.CanGoBack) 
    { 
     navigatedFromBrowser = false; 
     NavigationService.GoBack(); 
    } 

} 

這可能是做這件事的醜陋的方式,但它可能工作。 navigatedFromBrowser應該保留它的值,因爲從瀏覽器返回時,它將成爲頁面的相同實例。

+0

我正在用OnNavigatedTo方法做到這一點。它可以工作,但不好(頁面在返回前簡要顯示)。使用OnNavigatedFrom變體,如果我不將該調用包裝在BeginInvoke中(該UI尚未處於前景,我猜),它會引發InvalidOperationException。但即使我這樣做,它也不會改變任何事情。 – 2012-09-05 10:00:25

+0

你想如何運作Ashen? – 2012-09-24 04:55:45

相關問題