按下后退按钮时如何转到Windows Phone 8中的上一页

时间:2015-03-10 14:19:35

标签: c# windows-phone-7 windows-phone-8 windows-phone windows-phone-8.1

我的Windows phone c#based app中有一个主页或登录页面,用户输入登录详细信息,登录成功后用户被重定向到page2。在这里,用户将看到一个包含少量项目的列表框。从此列表框中选择一个项目后,将打开一个名为“Threadx”的新页面。(其中x是单击列表框中的x项目时打开的每个页面)

当用户在此Thread页面“Threadx”上时,他可能会收到Toast通知,并且线程会在该线程上使用新的回复或答案进行更新。

但是当用户点击后退按钮时,“ThreadX”页面没有关闭,而是进入之前状态较少的消息,依此类推,直到应用程序关闭为止。

protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);
        if (e.NavigationMode == NavigationMode.Back)
        {
            return;
        }
    }

我想知道在点击后退按钮时是否可以关闭此“Threadx”页面而不影响其他“Threadx + 1”,“Threadx + 2”......“Threadx + n”页面。

任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:5)

通常情况下,当您离开页面并导航到另一个页面时,窗口会将页面保留在其堆栈中。如果您想按下后退按钮导航到上一页,您可以执行以下操作:

将以下行添加到OnNavigatedTo方法:

Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed;

添加HardwareButtons_BackPressed方法的定义:

    private void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
    {
        e.Handled = true;
        if (Frame.CanGoBack)
            Frame.GoBack();
    }

不要忘记将Windows.Phone.UI.Input添加到命名空间列表中。

答案 1 :(得分:-1)

我得到它的另一种方法是在我的"线程"中的onnavigateto方法中使用下面的代码。页面,它对我有用。让我知道是否有一种优雅的方式或更好的方式。

if (e.NavigationMode == NavigationMode.Back)
         {
             NavigationService.Navigate(new Uri("/View/Page2.xaml", UriKind.Relative));
         }