¿Cómo mantener la página con el estado completo en la navegación WPF aplicación

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

  •  21-08-2019
  •  | 
  •  

Pregunta

Estoy construyendo una aplicación de WPF utilizando páginas y el servicio de navegación.
Una de las páginas tardan un objeto como un constructor

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

    ....

Así que, para desplazarse hasta él debo hacer

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

El problema se produce cuando estoy editando algo en la página y volver, y el delantero en Mi Página me sale el siguiente error:

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

¿Qué estoy haciendo mal?

¿Fue útil?

Solución

Es necesario decirle a la aplicación host que la página debe persistir en la memoria, en lugar de ser "descargada" cada vez que se desplaza fuera y "recargado" cuando se llega de nuevo a él. Que resulta ser bastante fácil: Sólo tiene que añadir la rel="noreferrer"> href="http://msdn.microsoft.com/en-us/library/system.windows.controls.page.keepalive.aspx" atributo a la declaración de la página:

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

Curiosamente, la documentación de MSDN dice lo siguiente:

  

Las páginas que se crean instancias y   navegado utilizando sólo el código (por   ejemplo, llamar Navegar), son   automáticamente mantenido con vida.

No he encontrado que para ser el caso, y de su pregunta parece que no está encontrando esa manera tampoco.

scroll top