【问题标题】:NavigationService.Navigate errorNavigationService.导航错误
【发布时间】:2014-08-11 07:16:29
【问题描述】:

我是 C# 编程的新手,我的代码有问题。 我创建了一个按钮并在其上应用了一个事件单击,该事件通过 NavigationService 技术打开了我项目的另一个页面。

这是脚本:

private void click_login(object sender, RoutedEventArgs e)
{
    NavigationService nav = NavigationService.GetNavigationService(this); 
    nav.Navigate(new Uri("Window1.xaml", UriKind.RelativeOrAbsolute));
}

当我执行时,我得到这个错误:

The object reference is not set to an instance of an object with an InnerException null.

你能帮帮我吗?

【问题讨论】:

  • 您在调试时是否检查过 nav 是否为空? GetNavigationService returns null
  • 你没看错,nav 为空。我必须以“新”开头吗?
  • 不,请检查我在备注部分提供的链接,当 GetNavigationService-Method 返回 null 时有说明。您移交给该方法的 this 可能有问题。
  • 这会返回两件事: WpfApplication3.MainWindow 只有“InitializeComponent();”目前,第二件事是我在 mainwindow.xaml 中的按钮这是否意味着“this”的含义存在冲突?
  • 你的 MainWindow 的类型是什么?窗户?

标签: c# navigationservice


【解决方案1】:

您的导航对象为空,因为您正在尝试获取 WPF 窗口的 NavigationService。

但是对于导航,您需要一个 Page (Navigation Overview on MSDN)

一个小例子:

创建到Page的Page1.xaml、Page2.xaml

在 App.xaml 中更改 StartupUriStartupUri="Page1.xaml"

Page1 Xaml:

 <StackPanel>
     <TextBlock Text="Hello from  Page1" />
     <Button Click="Button_Click" Content="Navigate to page 2"></Button>
 </StackPanel>

第 1 页 cs:

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        NavigationService nav = NavigationService.GetNavigationService(this);
        nav.Navigate(new Uri("Page2.xaml", UriKind.RelativeOrAbsolute));
    }

Page2 Xaml:

 <StackPanel>
     <TextBlock Text="Hello from  Page2" />
     <Button Click="Button_Click" Content="Navigate to page 1"></Button>
 </StackPanel>

Page2 cs:

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        NavigationService nav = NavigationService.GetNavigationService(this);
        nav.Navigate(new Uri("Page1.xaml", UriKind.RelativeOrAbsolute));
    }

【讨论】:

  • 对不起,我吃完回来了。如果我明白你说的话,那是因为我创建了一个窗口而不是我有问题的页面。我创建了一个新项目并尝试了您的代码,我很快就来告诉您发生了什么。谢谢你的回答
  • 好的,它的作品。现在我试着理解为什么。在我的项目中,我想从一个窗口,我的主窗口导航到另一个窗口,window1 我试图从我的主窗口导航到一个名为 Page1.xaml 的页面,同样的错误。让我创建另一个页面,其中包含主窗口的 xaml 代码并将 StartupUri 重定向到此页面。 (为了获得一个页面到页面的导航?)
  • 好的,现在它适用于我的项目。我创建了一个主页而不是主窗口。现在我可以通过单击按钮从界面导航到登录。我只有最后一个按钮,我怎么能像弹出窗口一样调用下一页而不像其他页面?提前致谢。
  • 使用 NavigationService,您无法在 Windows 之间导航,而这正是 Page 的用途。如果你想弹出一个导航服务不是你要找的。有几种不同的方法可以在 WPF 中打开弹出窗口或对话框,例如 Window.ShowDialogPopup Control
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多