을 무시하려고하고, 뒤로 버튼의 사용에 대한 많은 요구 사항이 있습니다. 뒤로 버튼을 단순히 백 스택으로 GoBack하는 것을 원하지 않기 때문에이 작업을 통해 기본 메뉴로 되돌아 갈 것이라는 경고 메시지 상자가 나타납니다.내가 윈도우 폰 8에 대한 간단한 응용 프로그램을 개발하기 위해 노력하고있어 NavigationMode.Back
문제는이 페이지는 몇 번을 다시로드해야하고, 다음 코드 정지 한 다시로드 후 제대로 작동이다. 메시지 상자가 여러 번 열립니다. 그리고 내가 다시로드할수록 더 많은 MessageBox가 나타납니다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using BackButtonTests.Resources;
namespace BackButtonTests
{
public partial class MainPage : PhoneApplicationPage
{
public MainPage()
{
InitializeComponent();
}
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedTo(e);
NavigationService.Navigating += NavigationService_Navigating;
}
void NavigationService_Navigating(object sender, NavigatingCancelEventArgs e)
{
if (e.NavigationMode == NavigationMode.Back)
{
e.Cancel = true;
MessageBox.Show("Quit");
}
}
private void Restart_Click(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri("/MainPage.xaml?reload=" + DateTime.Now.ToString(), UriKind.RelativeOrAbsolute));
//Use this fake reload query with unique value as a way to "deceive" the system, as windowsphone does not support NavigationService.Reload, and using simply the Uri of the same page will not properly load everything
}
private void Quit_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("Quit");
}
}
}
이것은 실제 프로젝트에서 겪고있는 문제를 정확하게 보여주는 테스트 코드 일뿐입니다. 물론 xaml에는 2 개의 버튼이 있습니다. 이 앞 페이지 (나의 실제 프로젝트에서 문제가) 때이 NavigatedTo 아니라 당신이 먼저 페이지를 다시로드 할 때까지
그리고 코드가 작동하지 않습니다.
제가 잘못하고있는 것에 대한 단서가 있습니까?
참고 : 나는 (예를 들어, OnBackKeyPress에) 이벤트 핸들러를 변화에 관심이 아니에요. 나는 내가 선택한 핸들러 (NavigationService.Navigating, NavigationMode.Back)를 어떻게 이해하는지 알고 싶다. 감사합니다
제목을 편집했습니다. "[제목에"태그 "가 포함되어 있어야합니까?] (http://meta.stackexchange.com/questions/19190/)"합의가 "아니오, 그렇지 않아야합니다"로 표시되어야합니다. –
그 점에 대해 죄송합니다. – Inox