【问题标题】:What is the difference between NavigationService.Navigate() method and PhoneApplicationFrame.Source property?NavigationService.Navigate() 方法和 PhoneApplicationFrame.Source 属性有什么区别?
【发布时间】:2010-05-05 08:34:12
【问题描述】:

取自Exercise 1: Creating Windows Phone Applications with Microsoft Visual Studio 2010 Express for Windows Phone

任务 3:步骤 9

// navigate
this.NavigationService.Navigate(new Uri("/PuzzlePage.xaml", UriKind.Relative));

注意:
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);

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

这两种技术有什么区别和相似之处?

【问题讨论】:

    标签: silverlight windows-phone-7


    【解决方案1】:

    本质上,它们都做同样的事情。

    NavigationService.Navigate 是一种原生 Silverlight 导航服务,允许从一个 xaml 文件异步导航到另一个文件(无需加载用户控件) - 有一个很棒的小概述 here

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

    现在还处于早期阶段,对您应该使用哪个做出有根据的猜测可能还为时过早。

    NavigationService 具有作为 Silverlight 原生类的优势,但 PhoneApplicationFrame.Source 是特定于 WP 的。

    【讨论】:

    • PhoneApplicationFrame.Source 继承自 Frame,因此不特定于 Windows Phone。我现在无法对其进行测试,但我认为即使使用 Source 属性,您也可以在页面堆栈中导航。 Navigate 方法和 Source 属性之间的一个区别是您不能在尚未加载的页面上调用 Navigate,而您可以随时设置 Source 属性。
    • “您不能在尚未加载的页面上调用 Navigate”?这是否意味着我无法导航到以前从未导航到的页面?非常混乱。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 2013-11-11
    • 2011-11-14
    • 1970-01-01
    • 2019-05-26
    • 2018-09-07
    相关资源
    最近更新 更多