Mémoriser un seul ensemble d'états pour plusieurs instances d'une page
Mise à jour : novembre 2007
Cet exemple illustre la manière de mémoriser plusieurs éléments d'état de page, parmi plusieurs instances de page, à l'aide de IProvideCustomContentState et CustomContentState.
Cet exemple présente une fonctionnalité spécifique de Windows Presentation Foundation et, par conséquent, ne suit pas les meilleures pratiques de développement d'applications. Pour un traitement complet des meilleures pratiques de développements d'applications Windows Presentation Foundation (WPF) et Microsoft .NET Framework, reportez-vous, selon les cas, aux documents suivants :
Accessibilité - Meilleures pratiques d'accessibilité
Localisation - Vue d'ensemble de la globalisation et de la localisation WPF
Performances - Optimisation des performances des applications WPF
Sécurité - Sécurité de Windows Presentation Foundation
Génération de l'exemple
Installez le Kit de développement logiciel (SDK) Windows et ouvrez la fenêtre Commande de son environnement de génération. Dans le menu Démarrer, pointez sur Tous les programmes et sur Microsoft Windows SDK, puis cliquez sur CMD Shell.
Téléchargez l'exemple, généralement à partir de la documentation du Kit de développement logiciel (SDK), vers votre disque dur local.
Pour générer l'exemple à partir de la fenêtre Commande de l'environnement de génération, accédez au répertoire source de l'exemple. À l'invite de commandes, tapez MSBUILD.
Pour générer l'exemple dans Microsoft Visual Studio, chargez l'exemple de solution ou de fichier projet, puis appuyez sur CTRL+MAJ+B.
Exécution de l'exemple
Pour exécuter l'exemple compilé à partir de la fenêtre Commande de l'environnement de génération, exécutez le fichier .exe du dossier Bin\Debug ou Bin\Release contenu sous le dossier du code source de l'exemple.
Pour exécuter l'exemple compilé avec le débogage dans Visual Studio, appuyez sur F5.
Notes
Par défaut, Windows Presentation Foundation (WPF) ne stocke pas les instances de page dans l'historique de navigation. Au lieu de cela, une nouvelle instance de page est créée à chaque accès. Par la suite, toute information d'état concernant la première instance de la page n'est plus mémorisée lors d'un nouvel accès à cette page. WPF peut mémoriser les instances de page ainsi que, par conséquent, l'état de la page dans l'historique de navigation, bien que cela puisse être coûteux en termes de mémoire.
Cependant, WPF fournit une infrastructure vous permettant de stocker des informations d'état avec l'entrée de la page dans l'historique de navigation et de réappliquer ces informations à la nouvelle instance de page lorsque l'on accède à cette page via l'historique de navigation.
Cet exemple illustre la manière dont il est possible pour une page d'implémenter IProvideCustomContentState afin de mémoriser un ensemble d'états, qui peut contenir un ou plusieurs éléments. Lorsque l'on quitte une page, WPF appelle GetContentState pour demander à la page l'état qu'elle veut mémoriser. GetContentState retourne une sous-classe de CustomContentState, que vous créez pour stocker et récupérer l'état.
Cette technique est particulièrement utile lorsque vous devez stocker plusieurs éléments d'états de page parmi plusieurs instances de page. Pour mémoriser un seul élément d'état pour plusieurs instances de page, envisagez d'utiliser une propriété de dépendance enregistrable sur journal (voir Mémoriser un seul élément d'état pour plusieurs instances d'une page). Pour mémoriser plusieurs ensembles d'états pour une seule instance de page, consultez Mémoriser plusieurs ensembles d'états par instance de page.
Remarque importante : |
---|
Lorsque vous stockez des informations dans un état de contenu personnalisé, vous ne pouvez pas stocker de références vers l'instance de la page dont vous mémorisez l'état. Ceci évite que WPF libère l'instance de page et se détourne de l'objectif du comportement par défaut de l'historique de navigation. Si tel est votre souhait, vous pouvez envisager de plutôt utiliser KeepAlive. |
Voir aussi
Tâches
Mémoriser un seul ensemble d'états pour plusieurs instances d'une page