WPF:第二页访问后NavigationService为NULL

时间:2009-09-09 15:41:03

标签: wpf navigation

情景:

我有这样的NavigationWindow风格:

<Style TargetType="NavigationWindow" x:Key="{x:Type NavigationWindow}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="NavigationWindow" >
                    ...
</Style>

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

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

这样可以正常工作并加载PersonalData页面。 在第二页上,我有一个“Home”按钮,可以导航回主页:

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

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

所以这也有效并且主页被加载。我甚至可以第二次点击btnNewUser,PersonalData页面打开没有任何问题。

但是,当我第二次点击“主页”按钮时,我收到“this.NavigationService”为空的错误..

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

1 个答案:

答案 0 :(得分:0)

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

发生此问题的原因是导航到其他页面后释放NavigationService以节省更多内存。

Reference - Page Lifetime and the Journal