我想将应用程序栏添加到我的应用程序的多个页面。因此,我将应用程序栏定义为应用程序资源,以便可以被多个页面使用。现在,这些按钮的事件处理程序在http://msdn.microsoft.com/en-us/library/hh394043%28v=VS.92%29.aspx中,在App类中。
但是,这些应用程序栏按钮基本上是指向重要页面的快捷方式。因此,单击按钮只会带您到相应页面。但是,由于我是在App.xaml.cs中定义事件处理程序的,因此不允许我进行导航。我了解原因。但是,我不知道如何解决该问题。

NavigationService.Navigate(new Uri("/Counting.xaml", UriKind.RelativeOrAbsolute));

说:“非静态字段,方法或属性System.Windows.Navigation.NavigationService.Navigate(System.Uri)要求对象引用”

最佳答案

如果您可以使用框架,是否可以使用?

(Application.Current.RootVisual as PhoneApplicationFrame).Navigate(new Uri("/Counting.xaml", UriKind.RelativeOrAbsolute));

编辑:
每个应用程序只有一个Frame。正是这个框架公开了NavigationService。因此,NavigationService始终可以通过框架访问,因为在任何Windows Phone应用程序中始终都有其实例。由于通常不实例化新的NavigationService,因此很容易认为这是一个静态方法。但是,实际上,这是一个非静态类,在运行您的应用程序时会自动实例化该类。在这种情况下,您要做的就是获取全局实例(该实例附加到始终存在的Frame上),并使用该实例在页面之间导航。这意味着您的类不必实例化或显式继承NavigationService。

关于c# - 从App.xaml.cs导航,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8604456/

10-09 05:28