Как сохранить страницу с полным состоянием в навигационном приложении wpf

StackOverflow https://stackoverflow.com/questions/860866

  •  21-08-2019
  •  | 
  •  

Вопрос

Я создаю приложение 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'.  

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

Это было полезно?

Решение

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top