Wil*_*sch 12 c# silverlight windows-phone-7
WP7新问题在这里.
我有以下代码:
public class KeyboardHandler : INotifyPropertyChanged
{
// lots of methods here
public void FunctionKeyHandler()
{
Uri targetUri = new Uri("/View/SelectTable.xaml",System.UriKind.Relative);
NavigationService.Navigate(targetUri);
}
// more methods
}
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
"错误1非静态字段,方法或属性'System.Windows.Navigation.NavigationService.Navigate(System.Uri)'需要对象引用
为什么?
key*_*rdP 39
该导航方法实际上就是非静态的一部分的NavigationService类.由于它是非静态的,因此您需要创建它的实例.您之前不必创建实例的原因是因为它是Page对象的一部分,但由于您不是从Page对象继承,因此您无权访问NavigationService实例.
有很多方法可以解决这个问题,例如在你的usercontrol中创建一个事件处理程序,你的主机页面对象(例如MainPage)可以订阅它并让它代表它激活NavigationService.
或者您只需从Application主机访问NavigationService,如下所示:
(Application.Current.RootVisual as PhoneApplicationFrame).Navigate(targetUri);
Run Code Online (Sandbox Code Playgroud)
NavigationService
是PhoneApplicationPage
类中属性的名称,但它也是类的名称.
NavigationService.Navigate()
从页面调用方法时,可以使用基类中的对象.但在您的情况下,您没有具有此名称的对象,因此编译器尝试访问NavigationService类,并进行调用,就像Navigate是静态方法一样.
但它不是静态的,这就是您收到此错误的原因:您必须使用NavigationService的实例
归档时间: |
|
查看次数: |
12398 次 |
最近记录: |