Как сохранить страницу с полным состоянием в приложении навигации wpf - PullRequest
4 голосов
/ 14 мая 2009

Я создаю приложение WPF, используя страницы и службу навигации.
Одна из страниц принимает объект в качестве конструктора

Sub New(ByVal o As Object)
    ' This call is required by the Windows Form Designer.
    InitializeComponent()

    ....

Итак, чтобы перейти к нему, я делаю

    Dim MyPage As New Page1(MyObject)
    MyBase.NavigationService.Navigate(MyPage)

Проблема возникает, когда я редактирую что-то на странице, и возвращаюсь, и вперед на MyPage я получаю следующую ошибку:

 Cannot create object of type 'Page1'. CreateInstance failed, which can be 
 caused by not having a public default constructor for 'Page1'.  

Что я делаю не так?

1 Ответ

6 голосов
/ 14 мая 2009

Вы должны сообщить хост-приложению, что страница должна сохраняться в памяти, а не «выгружаться» каждый раз, когда вы уходите, и «перезагружаться», когда вы возвращаетесь к ней. Это оказывается довольно просто: просто добавьте атрибут KeepAlive к объявлению вашей страницы:

<Page x:Class="..." KeepAlive="True">

Интересно, что документация MSDN гласит:

Страницы, которые создаются и перейти к использованию только кода (для например, вызывая Navigate), являются автоматически сохраняется в живых.

Я не обнаружил, что это так, и, судя по твоему вопросу, ты тоже не находишь этого.

...