¿Cómo mantener la página con el estado completo en la navegación WPF aplicación
-
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?
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.