2011-07-27 46 views
4

我是WP7中Silverlight開發人員的新手,並且需要在加載另一個視圖時吹掉視圖。如何在Windows Phone 7中彈出/完成視圖

//some good stuff happens so I need to load the next activity/view 
NavigationService.Navigate(new Uri("/Checkout.xaml", UriKind.Relative)); 

但之前/或該導航我需要彈出後/完成當前活動

在Android中我會打電話的光潔度和Objective-C中我會簡單地從棧中彈出此視圖控制器。 ..但在WP7我不知道如何提前

回答

4

可以幹掉你正在做的Page.OnNavigatedFrom處理什麼的,如果你真的需要刪除這個活動

謝謝。但我認爲你應該解釋一下你想要結束的邏輯。其他線程中的異步操作需要取消取消令牌,並且當您更改視圖時,UI呈現操作將自動結束。

記得 WP7使用後退按鈕,從而保持導航狀態。這意味着用戶期望能夠按下,返回到先前的視圖,並且使其看起來與它離開它時的情形完全相同。

-

流如何通常會泛出:

App.xaml 

    - MainPage.xaml (Your initial view) 

    IF (UserIsLoggedIn) 
     - Display Content 
    ELSE 
     - NavigateService.Navigate(new Uri("/Login.xaml")) 

    - Login.xaml 

    IF (LoginComplected) 
     NavigateService.GoBack() 
    ELSE 
     DisplayError 
+1

agreed-但我很有效需要這種行爲,因爲我將刪除一個登錄活動,如果用戶回擊,他們可以再次登錄造成我的痛苦:) –

+0

如何在這個事件中可以殺死堆棧上的以前的活動? –

+0

你不能「殺死」一個視圖。您在這裏處理登錄的方法是錯誤的。如果需要登錄,則正確的解決方案是導航到登錄視圖,並且在登錄完成後,使用NavigationService.GoBack(),以便用戶返回到應用程序的主視圖。這樣,視圖就會從導航狀態中移除。 此外,它不被稱爲WP7dev的「活動」。這是一個僅限Android的名字(並且是一個糟糕的名字!)將其稱爲視圖或頁面,而且每個人都會理解你;-) –

2

只是要clear-我用這種方法來保持用戶困惑。

隨着WP7的做法我添加了一個簡單的MessageBox讓用戶知道登錄是在去之前,讓他們瞭解該登錄是合法的:)

var result = MessageBox.Show("","Login Successful!", MessageBoxButton.OK); 

      if (result == MessageBoxResult.OK) 
      { 
       NavigationService.GoBack(); 
      } 
+0

雖然這是一個體面的解決方案,但我還沒有看到任何其他類似的應用程序。大部分工作完成後就會離開登錄屏幕。從移動用戶體驗的角度來看,用戶希望事情能夠發揮作用,並且只有在無效時才能得到通知。所以這對一些用戶可能看起來像一個毫無意義的煩惱;-) –

相關問題