WPF: NavigationService имеет значение NULL после посещения второй страницы - PullRequest
7 голосов
/ 09 сентября 2009

Сценарий:

У меня есть стиль 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 загружается. На этой второй странице у меня есть кнопка «Домой», которая переходит обратно на домашнюю страницу:

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

Я здесь использую «Навигация», потому что хочу использовать эту кнопку и в последующих формах, чтобы всегда иметь кнопку, ведущую на стартовую страницу.

Так что это тоже работает, и домашняя страница загружается. Я даже могу дважды щелкнуть там btnNewUser, и страница PersonalData открывается без проблем.

НО, когда я нажимаю кнопку «Домой» во второй раз, я получаю сообщение об ошибке, что «this.NavigationService» имеет значение null ..

Я только начал с WPF и понятия не имею, с чего начать исправление этого .. Кто-нибудь?

1 Ответ

0 голосов
/ 07 марта 2015

Попробуйте KeepAlive = True на вашей странице (для тех, кто собирается использовать NavigationService).

Причина, по которой возникает эта проблема, заключается в том, что NavigationService освобождается после перехода на другие страницы, чтобы сэкономить больше памяти.

Ссылка - Время жизни страницы и журнал

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...