来自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
方法的任何链接或文档。
答案 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;
}
希望它有所帮助。