2014-04-18 101 views
37

来自Windows Phone 8我从来没有想过会对Windows Phone 8.1代码做很多更改。基本上我只是想知道如何做页面导航,就像你会怎么做Windows Phone 8。为此,您应该添加:Windows Phone 8.1 - 页面导航

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

但该代码不适用于Windows Phone 8.1

有人可以帮助我吗?如有可能,提供所有新的Windows Phone 8.1方法的链接或文档。

+0

您是否收到任何错误? –

+0

此代码为我工作在我的诺基亚630与青色 –

+0

普莱舍参考[这里] [1]的答案,也许它可以帮助你...... [1]:http://stackoverflow.com/ a/28761419/2295643 –

回答

63

在的Windows Phone 8.1,页面导航的方法是这样的:

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

这意味着你将navagate为 'SecondPage',并通过 'PARAM'(基于对象的类)。

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

Frame.Navigate(typeof(SecondPage)); 

您可以找到的文档for this MSDN link

+0

如果我想返回,单击硬件后退按钮不起作用,所以我必须添加硬件后退按钮按下的事件,然后进入我想要的页面?或者是他们更简单的方法? –

+6

您可以在SecondPage中使用NavigationHelper,这样就不需要添加事件处理程序。例如,您可以创建BasicPage而不是BlankPage作为第二页。你会看到它。 –

+1

wp8.1与wp8.0不同,但与winrt更类似。 –

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。

+2

...并且不要忘记你可以在应用程序级别执行此操作:http://stackoverflow.com/questions/24335925/windows-phone-8-1-universal-app-terminates-on-navigating-back-from - 第二页 –

1
// Navigation Without parameters 

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



// Navigation with parameters 

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

如何传递多个参数 –

+0

使用数组或列表,将参数放在里面,并在参数中传递数组或参数列表。你想要样品吗? –

0

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

例如。您的自定义类:

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

CustomDataClass myData = new CustomDataClass(); 
myData.name = "abc"; 
myData.email = "[email protected]"; 

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; 
} 

希望它能帮助。