37

来自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

4 回答 4

63

在 Windows Phone 8.1 中,Page Navigation 方法是这样的:

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

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

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

Frame.Navigate(typeof(SecondPage));

您可以找到此 MSDN 链接的文档

于 2014-04-18T12:45:33.733 回答
23

如果你想回去,你可以使用:

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

如果您想在单击返回按钮时返回,则需要覆盖 hardwarebutton 事件:

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。

于 2014-05-15T05:21:38.450 回答
1
// Navigation Without parameters

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



// Navigation with parameters

this.Frame.Navigate(typeof(SecondPage),MyParameters);
于 2015-02-22T15:41:33.307 回答
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;
}

希望能帮助到你。

于 2016-11-09T14:04:43.067 回答