Page.KeepAlive Propriété
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Obtient ou définit une valeur qui indique si l'instance Page est conservée dans l'historique de navigation.
public:
property bool KeepAlive { bool get(); void set(bool value); };
public bool KeepAlive { get; set; }
member this.KeepAlive : bool with get, set
Public Property KeepAlive As Boolean
Valeur de propriété
true
si l'instance de la Page est conservée dans l'historique de navigation ; sinon, false
. La valeur par défaut est false
.
Exemples
L’exemple suivant montre comment utiliser XAML pour conserver une instance de la Page classe sur plusieurs navigations.
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
WindowTitle="HomePage"
KeepAlive="True"
>
</Page>
<Page x:Class="CSharp.HomePage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
WindowTitle="HomePage"
>
</Page>
using System;
using System.Windows;
using System.Windows.Controls;
namespace CSharp
{
public partial class HomePage : Page
{
public HomePage()
{
InitializeComponent();
// Keep this page in navigation history
this.KeepAlive = true;
}
}
}
Imports System.Windows
Imports System.Windows.Controls
Namespace VisualBasic
Partial Public Class HomePage
Inherits Page
Public Sub New()
InitializeComponent()
' Keep this page in navigation history
Me.KeepAlive = True
End Sub
End Class
End Namespace
Remarques
Lorsque vous accédez pour la première fois à une page, une nouvelle instance de la Page classe est créée. Lorsqu’une page est parcourue loin (en arrière ou en avant), une entrée pour la page est ajoutée à l’historique de navigation. Par défaut, l’entrée ne fait pas référence à l’objet de page. Au lieu de cela, l’entrée contient un URI (Uniform Resource Identifier) de pack pour la page. Lorsque l’entrée de la page est parcourue à l’aide de l’historique de navigation, l’URI de pack est utilisé pour créer une instance de la page. Ce comportement est la valeur par défaut, afin d’éviter une utilisation excessive de la mémoire : la conservation des instances de page peut rapidement consommer de la mémoire, en particulier celles avec une quantité de contenu non dérivée. Ce problème est accru par le fait qu’il n’existe aucune limite au nombre d’entrées pouvant être stockées dans les piles d’avant et de retour de l’historique de navigation. En revanche, le stockage des URI de pack pour les pages n’a pratiquement aucun impact sur la consommation de mémoire.
Le principal effet secondaire de la création de nouvelles instances d’une page est que l’état de page n’est pas mémorisé d’une instance d’une page à une autre. Dans ce cas, Windows Presentation Foundation propose plusieurs techniques pour mémoriser l’état.
Pour conserver une page vivante, vous définissez la KeepAlive propriété sur true
(la valeur par défaut est false
).
Remarque
Les pages qui sont instanciées et qui sont parcourues à l’aide uniquement de code (par exemple, l’appel Navigate) sont automatiquement conservées actives.
Vous devez éviter de définir sur KeepAlive , true
sauf si vous devez :
- Lorsqu’une page contient beaucoup de contenu, l’instanciation peut prendre beaucoup de temps. Si la page n’est pas conservée et que la page est fréquemment parcourue, le coût d’instanciation constante de la page peut avoir un impact négatif sur l’expérience utilisateur. Toutefois, du point de vue des performances, vous devez vous appuyer sur les paramètres par défaut et profiler les performances de votre application ; si le test identifie les pages dont les temps de chargement sont inférieurs à la plage requise pour votre application, la configuration des pages à conserver en vie peut être un moyen de résoudre le problème.
Remarque
Les entrées pour les pages qui sont conservées en vie ne sont pas conservées dans l’historique de navigation d’une application de navigateur XAML (XBAP) si un utilisateur navigue loin de l’application de navigateur XAML (XBAP) et y retourne. Seules les entrées de journal pour les pages qui ne sont pas conservées sont conservées dans l’historique de navigation.
Informations sur les propriétés de dépendance
Champ Identificateur | KeepAliveProperty |
Propriétés de métadonnées définies sur true |
Aucun |
Notes
Le type de métadonnées de cette propriété de dépendance est PropertyMetadata, et non FrameworkPropertyMetadata.