C# Windows Phone 8.1-页面导航

C# Windows Phone 8.1-页面导航,c#,windows-phone-8,windows-phone-8.1,C#,Windows Phone 8,Windows Phone 8.1,来自windowsphone8我从没想过windowsphone8.1代码会有很多变化。基本上,我只是想知道如何进行页面导航,就像在WindowsPhone8上那样。为此,您应添加: NavigationService.Navigate(new Uri("/SecondPage.xaml", UriKind.Relative)); 但该代码不适用于WindowsPhone8.1 有人能帮我吗?如果可能,请提供有关所有新的Windows Phone 8.1方法的任何链接或文档。在Windows

来自
windowsphone8
我从没想过
windowsphone8.1
代码会有很多变化。基本上,我只是想知道如何进行页面导航,就像在
WindowsPhone8
上那样。为此,您应添加:

NavigationService.Navigate(new Uri("/SecondPage.xaml", UriKind.Relative));
但该代码不适用于
WindowsPhone8.1


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

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

Frame.Navigate(typeof(SecondPage), param);
protected override void OnNavigatedTo(NavigationEventArgs e)
{
CustomDataClass myData2 = e.Parameter as CustomDataClass;
string name = myData2.name;
string email = myData2.email;
}
这意味着您将导航到“SecondPage”,并传递“param”(基于对象的类)

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

Frame.Navigate(typeof(SecondPage));

您可以找到文档

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

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。

要发送多个参数:
// Navigation Without parameters

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



// Navigation with parameters

this.Frame.Navigate(typeof(SecondPage),MyParameters);
现在回答这个问题已经很晚了,但可能会有帮助。您可以创建自定义类,在其中设置参数,并将其对象作为参数发送到目标页

比如说。您的自定义类:

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中检索到如下功能:

Frame.Navigate(typeof(SecondPage), param);
protected override void OnNavigatedTo(NavigationEventArgs e)
{
CustomDataClass myData2 = e.Parameter as CustomDataClass;
string name = myData2.name;
string email = myData2.email;
}

希望能有所帮助。

您有任何错误吗?此代码适用于我的诺基亚630和CyanPless。请参阅[此][1]答案,也许它可以帮助您。。。[1] :NavigationService给我错误。如果我想返回,单击硬件返回按钮不起作用,那么我是否必须添加硬件返回按钮按下事件,然后进入我想要的页面?或者它们是一种更简单的方法?您可以在第二个页面中使用NavigationHelper,这样就不需要添加事件处理程序。例如,您可以创建一个BasicPage而不是BlankPage作为第二个页面。您将看到它。wp8.1与wp8.0不同,但与winrt更为相似。如何传递多个参数。@Devi Prasad您应该定义一个包含多个参数的类……并且不要忘记您可以在应用程序级别执行此操作:如何传递多个参数数组或列表,将您的参数放入其中,并在参数中传递数组或列表。你要样品吗?