Page.KeepAlive Propriété

Définition

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.

S’applique à

Voir aussi