두 페이지 Silverlight WP 응용 프로그램 : PageA 기본 페이지와 PageA에서 열고 매개 변수를 전달할 수있는 다른 PageB를 생각해 봅시다.WP8 Silverlight 페이지 응용 프로그램에서 삭제 표시 후 NavigationContext.QueryString이 지워지지 않음
NavigationService.Navigate(new Uri(
"/EditEntryPage.xaml?ItemIndex=" + myItemIndex, UriKind.Relative));
을 그리고 매개 변수와 사건을 처리하기 위해이 페이지 B의 OnNavigatedTo/OnNaviagetdFrom 행사에 구성 다음 사용 : 찰스 페 졸드는 'WP7 프로그래밍'자신의 베스트 셀러에서 알 수 있듯이, 우리는이 같은 문을 사용하여 페이지 B를 인스턴스화 할 수 있습니다 앱을 삭제 표시 다시 활성화되었을 때 :
protected override void OnNavigatedTo(NavigationEventArgs e)
{
string myParam;
if (this.NavigationContext.QueryString.TryGetValue("ItemIndex", out myParam))
{
fItemIndex = int.Parse(myParam);
}
else if (PhoneApplicationService.Current.State.ContainsKey(APP_STATE_KEY_ITEM_INDEX))
{
fItemIndex = (int)PhoneApplicationService.Current.State[APP_STATE_KEY_ITEM_INDEX];
}
}
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
PhoneApplicationService.Current.State[APP_STATE_KEY_ITEM_INDEX] = fItemIndex;
}
그러나, 우리는 하나의 문제가 사용자가 페이지 B에서 응용 프로그램을 왼쪽 경우 응용 프로그램은 삭제 표시되고, 사용자는을 사용하여 동일한 페이지 B에 응용 프로그램에 다시 반환 작업 관리자. 이 경우 OnNavigatedTo 이벤트의 NavigationContext.QueryString
은 페이지가 PageA에서 호출 된 것과 동일한 ItemIndex 매개 변수를 반환하고 두 번째 'if'는 실행되지 않습니다!
중요한 점 (앱 설정 등)을 놓쳤거나 WP8에서 동작이 변경되어 더 이상이 방법을 사용할 수 없습니까?
본인은 앱 재 활성화와 내부 앱 탐색을 구별하는 데 사용할 수 있다는 데 동의합니다. 내 응용 프로그램에서는 동등한 솔루션을 사용합니다. 대신 NavigationEventArgs.NavigationMode를 분석합니다. 응용 프로그램에서 페이지를 열면 New이고, OS에서 돌아 오면 Back입니다. 그러나 제 질문의 키워드는 '묘비'입니다. 귀하의 요리법은 그것이 사실인지 여부를 알 수 없도록합니다. – TecMan