WPF:第二页访问后NavigationService为NULL

Tho*_*ock 7 navigation wpf

场景:

我有这样的NavigationWindow样式:

<Style TargetType="NavigationWindow" x:Key="{x:Type NavigationWindow}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="NavigationWindow" >
                    ...
</Style>
Run Code Online (Sandbox Code Playgroud)

我启动我的应用程序,加载一个名为Home.xaml的页面.在Home.xaml中,我有一个导航到另一个名为PersonalData的页面的按钮:

private void btnNewUser_Click(object sender, System.Windows.RoutedEventArgs e)
{
    PersonalData personalData = new PersonalData();
    this.NavigationService.Navigate(personalData);
}
Run Code Online (Sandbox Code Playgroud)

这工作正常,并加载PersonalData页面.在第二页上,我有一个导航回主页的"Home"按钮:

    private void btnHome_Click(object sender, System.Windows.RoutedEventArgs e)
    {
        Home home = new Home();
        this.NavigationService.Navigate(home);
    }
Run Code Online (Sandbox Code Playgroud)

我在这里使用"导航"是因为我想在以后的表单上重复使用该按钮,总是有一个通向开始页面的按钮.

所以这也有效,主页被加载.我甚至可以再次点击btnNewUser那里,PersonalData页面打开没有任何问题.

但是,当我第二次单击"主页"按钮时,出现"this.NavigationService"为空的错误.

我刚刚开始使用WPF,我不知道从哪里开始修复这个......任何人?

Hos*_*ost -1

在您的页面上尝试KeepAlive=True(对于那些将要使用 NavigationService 的页面)。

发生此问题的原因是导航服务在您导航到其他页面后被释放,以节省更多内存。

参考资料 - 页面生命周期和期刊