2015-02-05 7 views
0

WP 8 앱을 개발 중이며 탐색에 문제가 있습니다.BackStack에서 실제 페이지를 제거하지 않고 뒤로 이동

실제 페이지 상태를 잃지 않고 백 스택의 페이지를 탐색 할 수있는 방법을 찾을 수 없습니다.

상황은 이것이다 :

  1. I 페이지 A를 해요 및 페이지 B로 이동, 그래서 다시 스택은 페이지 BI에 A.
  2. 이 들어 페이지 A를하지만로 다시 이동하려면 페이지 B가 백 스택에 유지되므로 페이지 A에 다시있을 때 페이지 B에 돌아가 상태를 유지할 수 있습니다.

이렇게 : A -> B -> A -> B, 일종의 순환이지만 하나가 아닙니다. 페이지 A는 페이지 B에 적은 항목으로 표시되는 항목을 표시하지만 B 페이지부터는 A 페이지로 이동하여 세부 사항을 확인한 다음 다시 돌아가거나 다시 볼 수 있습니다.

복잡해 보일지 모르지만 나는 꽤 직관적이라고 확신합니다. Android 및 iOS에서 이와 같이 작동합니다.

내가) NavigationService.GoBack를 (호출 할 때 그래서는 이전 상태로 페이지 A를 돌아갑니다 페이지 A를하기 전에 탐색 스택 페이지 B를 추가하는 어쨌든 거기에 다음 B.

A에서 동일한 작업을 수행

미리 감사드립니다 !!!

답변

0

how to preserve and restore page state for Windows Phone 8을 배우려면이 도움말 항목을 사용하십시오. 탐색 스택은 페이지 URI와 소량의 데이터 만 저장할 수 있습니다 (URI 매개 변수에 있음). 이처럼

:

NavigationService.Navigate(new Uri("/SecondPage.xaml?var=value", UriKind.Relative));

SecondPage.xaml 당신이 발의 값을 얻을 수 있습니다. 여기에 detailed example입니다.

if (NavigationContext.QueryString.TryGetValue("val", out msg)) 
1

몇 가지 옵션이 있습니다. 표준 MVVM 패턴을 사용하는 경우 실제로는 "페이지 상태"를 저장하지 않습니다 (목록 또는 선택된 텍스트 컨트롤에서 스크롤 위치와 같은 것을 의미하지 않는 한) - 데이터를 저장하고 있습니다. 그리고 그 데이터는 다음 번에 페이지 B로 이동할 때 나타납니다. 데이터 바인딩에 대한 자세한 내용과 다음 번에 탐색 할 때 페이지에 다시 바인딩되는 데이터를 전역 상태로 저장하는 방법에 대해서는 this videoMSDN article it points to을 볼 수 있습니다 .

데이터 바인딩으로 문제가 해결되지 않으면 다른 페이지를 사용하지 말고 A와 B를 동일한 물리적 페이지에서 두 개의 다른 컨테이너로 사용하는 것입니다. 그런 다음 trap the back button을 컨테이너 A로 다시 전환해야 할 때 "뒤로"가짜로 만들 수 있습니다.

+0

안녕하세요! 답장을 보내 주셔서 감사합니다. WP에서는 이전 페이지로 이동하거나 탐색 할 때 앞으로 갈 새로운 페이지를 만들기 위해 페이지를 삭제하기 때문에 첫 번째 옵션이 작동하지 않습니다. 이전 페이지를 다시로드하는 유일한 방법은 돌아가서 페이지 상태를 저장하는 유일한 방법입니다. 나는 돌아가서 국가를 구할 필요가있다. 두 번째 해결 방안에 관해서는, 두 페이지가 어느 정도 복잡성을 더해므로이 방법으로 해결할 수는 없습니다. 처음에는 그런 식 이었지만 성능 문제 때문에 두 페이지로 나누어야했습니다. – Martin

+0

UI는 "페이지"를 한 번에 메모리에 둘 수있을만큼 간단합니다 (두 번째 해결 방법은 불가능합니다). 그렇지 않으면 UI를 언로드해야합니다 (첫 번째 옵션이 수행하는 것입니다). 비디오/기사에 대한 링크를 따라 갔습니까?데이터 바인딩은 UI 개체가 소멸된다는 사실에 영향을받지 않습니다. –