2013-09-05 4 views
0

BackStack 항목을 NavigationService.BackStack에서 제거하려고합니다.Windows Phone에서 특정 백 스택 항목을 제거합니다.

다시 입력 항목을 제거하는 방법이 하나 있는데, 즉 NavigationService.RemoveBackEntry();이지만 다시 입력 한 내용은 모두 stack에서 삭제됩니다. 그래서, 내 질문은 특정 백 항목을 제거하는 방법?

NavigationService.CurrentSource에서 쿼리 문자열을 제거하려면 어떻게해야합니까? Query String없이 Uri 만 검색하고 싶습니다.

현재 스택 (현재 페이지)에만 인접한 스택과 상호 작용할 수 있기 때문에, 미리 :)

+1

당신은 그렇게 할 수 없으며, 뒤로 버튼을 클릭했을 때 일어나는 일에 대한 사람들의 기대를 망칠 것이기 때문에 그렇게해서는 안됩니다. –

답변

3

당신은 특정 다시 스택 개체를 제거 할 수 없습니다에 감사합니다, 그래서 단지 이전 스택 개체를 제거 할 수 있습니다. 다음 페이지 NavigateTo() 시간에 스택을 제거해야합니다.

-1

이 코드를 사용하면됩니다. 는 page.Loaded 이벤트로이 삽입 :

int backstackcounter = this.NavigationService.BackStack.Count(); 

      for (int i = 0; i < backstackcounter; i++) 
      { 
       var previousPage = this.NavigationService.BackStack.FirstOrDefault(); 

       if (previousPage != null && !previousPage.Source.ToString().StartsWith("/LoginPage.xaml")) 
       { 
        this.NavigationService.RemoveBackEntry(); 
       } 
      } 

은 "LoginPage.xaml"

내가 가기 backstack에 체류하고자하는 페이지입니다.

+0

이렇게하면 BackStack을 탐색 할 수 없습니다. this.NavigationService.BackStack.FirstOrDefault()는 항상 첫 번째 요소를 제공합니다. RemoveBackEntry()는 항상 가장 최근 요소를 제거합니다. 가장 최근 요소에 로그인 페이지가 없으면이 코드는 작동하지 않습니다. – Muhammad