【问题标题】:In the given code is NavigationService a class or an object?在给定的代码中 NavigationService 是一个类还是一个对象?
【发布时间】:2014-01-17 16:03:43
【问题描述】:
void RecordButton_Click(object sender, EventArgs e)
{
    NavigationService.Navigate(new Uri("/RecordAudio.xaml",UriKind.Relative));
}

在上面的代码中,NavigationService 是一个类还是 NavigationService 类型的对象? .

如果它是一个类。那么 Navigate() 是静态方法吗?

如果它是一个对象。为什么我们没有使用 new 操作符实例化 NavigateService 类?

【问题讨论】:

  • 如果您使用的是 Visual Studio,请使用 Go to definition (F12) 查找。

标签: c# .net windows-phone-8 .net-framework-version windows-phone-8-sdk


【解决方案1】:

据我所知:NavigationService 类“属于”您最近访问的页面,它从未“单独”使用过。您可以改用它的方法,例如 navigate。该页面在某时得到通知。新是要展示的。

【讨论】:

  • NavigationService 是 Page 的一个属性,它的类型是 NavigationService,您可以在 System.Windows.Navigation 中找到它。
【解决方案2】:

正如@VahidNd 所说 - 使用 F12(如果您使用 VS)。为了澄清它是这样的:
PhoneApplicationPage(你使用的)基类是Page

public class PhoneApplicationPage : Page
{
 // content
}

public class Page : UserControl
{
    public NavigationCacheMode NavigationCacheMode { get; internal set; }
    public NavigationContext NavigationContext { get; }
    public NavigationService NavigationService { get; }
    public string Title { get; set; }

    protected virtual void OnFragmentNavigation(FragmentNavigationEventArgs e);
    protected virtual void OnNavigatedFrom(NavigationEventArgs e);
    protected virtual void OnNavigatedTo(NavigationEventArgs e);
    protected virtual void OnNavigatingFrom(NavigatingCancelEventArgs e);
}

您可以看到它有一个NavigationService 类型的属性NavigationService,它是System.Windows.Navigation 中的一个类。
当您使用 F12 键时,您可以看到这些依赖关系 - 只需将光标的位置设置在您想要的类型/属性/什么上,然后按一下键。

【讨论】:

    【解决方案3】:

    NavigationService 是一个非静态类,它的方法Navigate 也是如此。由于该方法是非静态的,因此您需要创建该类的一个对象。但是 NavigationService 类会在应用程序运行时自动实例化,并作为属性附加到 Frame 对象,因此单个框架中的所有 Page Object 都可以使用。

    参考

    对于Understanding的Page Frame Content和类NavigationService角色的区别。

    链接到相关问题One

    链接到相关问题Two

    【讨论】:

    • 由于我是新手,我有很多问题: 1. NavigationService 如何在应用程序运行时自动实例化? 2.什么是框架对象? 3. 在倒数第二行你说 NavigationService 类的实例存储在属性 NavigationService 中? 4. Frame对象、Page对象和页面内的许多对象是否遵循某种层次结构?
    • 在应用程序中创建的基础对象是一个框架,我们在一个框架中附加了多个页面,一个框架包含多个页面、系统托盘、应用程序栏。 NavigationService 对象作为属性绑定到该单个框架对象。我在回答中提供的第一个链接很好地解释了这一点。
    • 了解基础对象。请你也回答问题1、3吗
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    • 2016-07-03
    • 2011-04-27
    • 2020-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多