C# · 12月 27, 2021

c# – 从App.xaml.cs导航

我想在应用程序的多个页面上添加应用程序栏.因此,我将应用程序栏定义为应用程序资源,以便可以被多个页面使用.现在,这些按钮的事件处理程序在App Store中,如 http://msdn.microsoft.com/en-us/library/hh394043%28v=VS.92%29.aspx所述.
但是,这些应用程序栏按钮基本上是重要页面的快捷方式.所以,点击一个按钮只会带你到相应的页面.但是,由于我在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.