WPF NavigationService каждый раз создает новые страницы

Я использую WPF NavigationService для перехода с одной страницы на другую в своем приложении, например:

    private void Image_Forward_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        if (YesNo.Choice == "yes")
        {
            NavigationService.Navigate(new PageQuestion2Yes());
        }
        else if (YesNo.Choice == "no")
        {
            NavigationService.Navigate(new PageQuestion2No());
        }
    }

Я обнаружил, что если я перехожу на страницу более одного раза, то каждый раз создается новый объект Page. (Я заметил это, добавляя конструктор на свои страницы и отображая окно сообщений, и обнаружил, что при выходе из основного приложения все страницы уничтожаются)

Как я могу использовать NavigationService, чтобы за время существования моего приложения была создана только одна страница?


person Harry Boy    schedule 28.12.2013    source источник


Ответы (1)


Из вашего кода совершенно очевидно, что вы хотите всегда новый объект страницы после навигации:

// Calling constructor manually.
NavigationService.Navigate(new PageQuestion2Yes());

Вместо этого сохраните объект в поле уровня класса и всегда переходите к этому объекту:

private PageQuestion2Yes yesObject = new PageQuestion2Yes();

Теперь в методе всегда передайте этот объект при навигации:

NavigationService.Navigate(yesObject);
person Rohit Vats    schedule 28.12.2013
comment
Итак, если я вызову NavigationService.Navigate(new Uri(xyz)) всегда ли будет создаваться новая страница для меня? - person hellodear; 11.05.2017