我有以下代码
private void rectangle2_Click(object sender, RoutedEventArgs e)
{
NavigationService.Navigate(new Uri("/Jobsearch.xaml", UriKind.Absolute));
}
我在windowsphonecontrol page.xaml中取了一个按钮,我想当我点击那个按钮转到另一个页面但是我收到一个错误,例如:
非静态字段,方法或者需要对象引用 属性 'System.Windows.Navigation.NavigationService.Navigate(的System.Uri)'
为什么?
答案 0 :(得分:2)
NavigationService
不是static
类,Navigate
不是static
方法。
如果没有NavigationService
类的实例,无法调用此方法。您需要创建NavigationService
类的实例,并使用Navigate
参数调用它的new Uri("/Jobsearch.xaml", UriKind.Absolute)
方法。
正如错误消息所示;
对于非静态字段,方法或,需要对象引用 属性
private void rectangle2_Click(object sender, RoutedEventArgs e)
{
this.NavigationService.Navigate(new Uri("/Jobsearch.xaml", UriKind.Absolute));
}
答案 1 :(得分:2)
您需要拥有NavigationService
的实例,因为Navigate
不是静态方法。尝试
private void rectangle2_Click(object sender, RoutedEventArgs e)
{
NavigationService Navserv = new NavigationService();
Navserv.Navigate(new Uri("/Jobsearch.xaml", UriKind.Absolute));
}
答案 2 :(得分:2)
静态方法是可以在不实例化对象的情况下调用的方法:
YourClass.YourStaticMethod();
非静态方法作用于您调用它的对象:
YourClass yourObject = new YourClass(); // creating an instance
yourObject.YourNonStaticMethod(); // Applies only to yourObject
答案 3 :(得分:0)
另一个原因是,您需要在MainWindow中有一个frame标签作为视图的容器。
<Frame x:Name="frame"/>
然后在MainWindow构造函数中实例化navigationService。
public MainWindow()
{
InitializeComponent();
ApplicationHelper.NavigationService = frame.NavigationService;
}
然后在点击函数内调用Navigate()。
private void Navigate_Click(object sender, RoutedEventArgs e)
{
YourView view = new YourView ();
frmToDoList.Navigate(view);
}