2013-02-26 5 views
0

В проекте есть много производных классов Page и a MainWindow, что является NavigationWindow.Использование NavigationWindow со страницами

Если там действительно Navigate(new PageDerivedClass()) в коде или должен иерархическая Page дерево будет построен раньше?

Если я вернуться назад и сделать то же самое еще раз, чтобы создать новый PageDerivedClass, не должны приложение каким-то образом обрабатывать этот случай и использовать уже созданную страницу вместо строительства нового?

Насколько я могу видеть, новая страница не GarbageCollected, , поскольку вы все еще можете перемещаться по стрелкам NavigationWindow.

Происходит ли это как-то?

Как правильно использовать его? MSDN здесь не очень помогает.

ответ

1

NavigationWindow не хранит экземпляр объекта контента в истории навигации. Вместо этого NavigationWindow создает новый экземпляр объекта контента каждый раз, когда он перемещается, используя историю навигации. Это поведение предотвращает чрезмерное потребление памяти при навигации по большим количествам и большим фрагментам контента. Следовательно, состояние содержимого не запоминается из одной навигации в другую. Однако WPF предоставляет несколько методов, с помощью которых вы можете хранить часть состояния для части контента в истории навигации. (Источник MSDN)

Если вы действительно хотите, чтобы избежать создания нового каждый раз, Вы также можете создавать экземпляры различных страниц (стр.1, PAGE2 и т.д.) и сохранять их в объекте Application, а затем перейти к ним, как это:

NavigationSerivce.Navigate(App.Page2); 

Soruce: Stackoverflow answer

+0

Просто это как-то Способность читать! Спасибо! –

Смежные вопросы