Windows Phone 8.1 - 页面导航

时间:2014-04-18 12:39:47

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

来自Windows Phone 8我从未想过会对Windows Phone 8.1代码进行大量更改。基本上我只是想知道如何进行页面导航,就像你在Windows Phone 8上做的那样。要做到这一点,你应该添加:

NavigationService.Navigate(new Uri("/SecondPage.xaml", UriKind.Relative));

但该代码不适用于Windows Phone 8.1

有人可以帮我这个吗?如果可能,请提供有关所有新Windows Phone 8.1方法的任何链接或文档。

4 个答案:

答案 0 :(得分:63)

在Windows Phone 8.1中,页面导航方法如下:

Frame.Navigate(typeof(SecondPage), param);

这意味着您将导航到' SecondPage'并传递' param' (基于对象的类)。

如果您不需要传递任何参数,可以使用:

Frame.Navigate(typeof(SecondPage));

您可以找到文档for this MSDN link

答案 1 :(得分:23)

如果您想返回,可以使用:

if(this.Frame.CanGoBack)
{
this.Frame.GoBack();
}

如果您想返回单击后退按钮,则需要覆盖硬件按钮事件:

HardwareButtons.BackPressed += HardwareButtons_BackPressed;

void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
        {
            Frame rootFrame = Window.Current.Content as Frame;
            if(rootFrame != null && rootFrame.CanGoBack)
            {
                rootFrame.GoBack();
                e.Handled = true;
            }

        }

确保将e.Handled设置为true。

答案 2 :(得分:1)

// Navigation Without parameters

this.Frame.Navigate(typeof(SecondPage));



// Navigation with parameters

this.Frame.Navigate(typeof(SecondPage),MyParameters);

答案 3 :(得分:0)

发送多个参数: 回答很晚但可能对某人有所帮助。您可以创建自定义类,在其中设置参数并将其对象作为参数发送到目标页面。

例如。您的自定义类:

public class CustomDataClass
{
public string name;
public string email;
} 

CustomDataClass myData = new CustomDataClass();
myData.name = "abc";
myData.email = "abc@hotmail.com";

Frame.Navigate(typeof(SecondPage), myData);

然后在目标页面上,您可以在OnNavigatedTo函数中检索,如下所示:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
CustomDataClass myData2 = e.Parameter as CustomDataClass;
string name = myData2.name;
string email = myData2.email;
}

希望它有所帮助。