Windows Phone 8.1 RT 中的导航
Navigation in Windows Phone 8.1 RT
我正在开发 Windows Phone 8.1 通用应用程序。到目前为止一切都很好,但我在页面之间导航时遇到困难。
第一个是主页。当我单击 MainPage 上的 post 时,它会打开一个名为 PostPage 的页面。 PostPage 具有执行各种操作的按钮。其中之一打开一个名为 commentsPage 的页面。
当我在 commentsPage 中按下后退按钮时,预期的行为是返回到 PostPage,但它返回到 MainPage。
这是怎么做到的?这样当我按下后退按钮时,它会返回到 PostPage 而不是 MainPage。
我正在使用以下代码来处理后退按钮按下
void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
{
if (Frame.CanGoBack)
{
Frame.GoBack();
//Indicate the back button press is handled so the app does not exit
e.Handled = true;
}
}
更新: 这就是我从 MainPage 导航到另一个页面的方式
this.Frame.Navigate(typeof(postPage));
此问题是由于从页面订阅了 BackPressed 事件,但没有取消订阅而引起的。这意味着页面实例保持活动状态,并且 BackPressed 事件由多个事件处理程序处理;在这种情况下,Post 页面和评论页面都在处理事件并且都在调用 Frame.GoBack().
要解决此问题,请在离开页面时取消订阅 BackPressed 事件,即取消订阅 OnNavigatedFrom() 覆盖。
我正在开发 Windows Phone 8.1 通用应用程序。到目前为止一切都很好,但我在页面之间导航时遇到困难。
第一个是主页。当我单击 MainPage 上的 post 时,它会打开一个名为 PostPage 的页面。 PostPage 具有执行各种操作的按钮。其中之一打开一个名为 commentsPage 的页面。
当我在 commentsPage 中按下后退按钮时,预期的行为是返回到 PostPage,但它返回到 MainPage。
这是怎么做到的?这样当我按下后退按钮时,它会返回到 PostPage 而不是 MainPage。
我正在使用以下代码来处理后退按钮按下
void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
{
if (Frame.CanGoBack)
{
Frame.GoBack();
//Indicate the back button press is handled so the app does not exit
e.Handled = true;
}
}
更新: 这就是我从 MainPage 导航到另一个页面的方式
this.Frame.Navigate(typeof(postPage));
此问题是由于从页面订阅了 BackPressed 事件,但没有取消订阅而引起的。这意味着页面实例保持活动状态,并且 BackPressed 事件由多个事件处理程序处理;在这种情况下,Post 页面和评论页面都在处理事件并且都在调用 Frame.GoBack().
要解决此问题,请在离开页面时取消订阅 BackPressed 事件,即取消订阅 OnNavigatedFrom() 覆盖。