为什么我在windows.navigation上出错?

时间:2014-09-16 10:30:14

标签: c#

我有以下代码

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)'

为什么?

4 个答案:

答案 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);
}