Comment garder avec l'état complet de la navigation WPF application
-
21-08-2019 - |
Question
Je construis une application WPF en utilisant des pages et le service de navigation.
L'une des pages prendre un objet en tant que constructeur
Sub New(ByVal o As Object)
' This call is required by the Windows Form Designer.
InitializeComponent()
....
Alors, pour naviguer jusqu'à ce que je faire
Dim MyPage As New Page1(MyObject)
MyBase.NavigationService.Navigate(MyPage)
Le problème se produit quand j'éditer quelque chose dans la page, et revenir en arrière et l'avant-propos mypage je reçois l'erreur suivante:
Cannot create object of type 'Page1'. CreateInstance failed, which can be
caused by not having a public default constructor for 'Page1'.
Qu'est-ce que je fais mal?
La solution
Vous devez indiquer à l'application hôte que la page doit persister dans la mémoire, au lieu d'être « déchargé » chaque fois que vous quittez et « reloaded » quand vous revenez à lui. Cela se révèle être assez facile: Il suffit d'ajouter le attribut de KeepAlive à votre déclaration de page:
<Page x:Class="..." KeepAlive="True">
Fait intéressant, la documentation MSDN dit ceci:
Les pages qui sont instanciés et naviguée à utiliser uniquement le code (pour par exemple, appeler Naviguer), sont automatiquement maintenu en vie.
Je n'ai pas trouvé que soit le cas, et de votre question, il semble vous ne trouvez pas cette façon non plus.