从App.xaml.cs导航

Div*_*vya 9 c# windows-phone-7

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

NavigationService.Navigate(new Uri("/Counting.xaml", UriKind.RelativeOrAbsolute));
Run Code Online (Sandbox Code Playgroud)

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

key*_*rdP 24

如果您可以访问框架,它是否有效?

(Application.Current.RootVisual as PhoneApplicationFrame).Navigate(new Uri("/Counting.xaml", UriKind.RelativeOrAbsolute));
Run Code Online (Sandbox Code Playgroud)

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

  • 别客气.我编辑了我的帖子 - 希望它解释了它的工作原理. (2认同)