NavigationService.Navigate()方法和PhoneApplicationFrame.Source属性有什么区别?

Afr*_*ief 5 silverlight windows-phone-7

摘自练习1:使用Microsoft Visual Studio 2010 Express for Windows Phone创建Windows Phone应用程序

任务3:步骤9

// navigate
this.NavigationService.Navigate(new Uri("/PuzzlePage.xaml", UriKind.Relative));
Run Code Online (Sandbox Code Playgroud)

注意:
PhoneApplicationPage类提供了通过其NavigationService属性导航到页面的方法和属性.您可以调用NavigationService的Navigate方法并将页面的URI作为参数传递.您还可以使用GoBack和GoForward方法在导航历史记录中向后或向前导航.硬件后退按钮还在应用程序中提供向后导航.上面显示的事件处理程序使用NavigationService转到PuzzlePage.xaml页面.

任务4:步骤3

(RootVisual as Microsoft.Phone.Controls.PhoneApplicationFrame).Source = 
    new Uri("/ErrorPage.xaml", UriKind.Relative);
Run Code Online (Sandbox Code Playgroud)

注意:
...
每当您将Source属性设置为与显示的内容不同的值时,框架将导航到新内容.
...

这两种技术有什么不同和相似之处?

Dan*_*May 6

从本质上讲,他们都做同样的事情.

NavigationService.Navigate是土生土长的Silverlight导航服务,以允许从一个XAML文件到另一个异步导航(无需加载用户控件) -有一个很好的小概述这里.

不同之处在于NavigationService能够以浏览器式的方式前后移动.设置Source属性PhoneApplicationFrame不会.

仍处于早期阶段,对于您应该使用哪种方法进行有根据的猜测可能还为时过早.

NavigationService具有Silverlight本机类的优势,但是PhoneApplicationFrame.Source特定于WP.