我们在WP项目中采用页面导航时候,经常会使用以下代码
NavigationService.Navigate(new Uri("/Page1.xaml",UriKind.Relative));
但是,有的时候会出现错误:
"Error 1 An object reference is required for the non-static field, method, or property 'System.Windows.Navigation.NavigationService.Navigate(System.Uri)'
我了解了一下,
http://stackoverflow.com/questions/6003212/wp7-navigationservice-navigate-is-complaining-that-it-is-not-receiving-an-obj
从上面这个答案中可以了解到:
The
Navigate method is actually part of the non-static
NavigationService class.
Since it's non-static, you need to create an instance of it. The reason you haven't had to create an instance before is because it's part of the Page object,
but since you're not inheriting from the Page object, you don't have access to the NavigationService instance.
There are various ways around this such as creating an event handler in your usercontrol that your host Page object (e.g. MainPage) can subscribe to and have it fire the NavigationService on its behalf.
Or you can simply access the NavigationService from the Application host like so:
(Application.Current.RootVisual as PhoneApplicationFrame).Navigate(targetUri);