Page.KeepAlive Eigenschaft

Definition

Ruft einen Wert ab, der angibt, ob die Page-Instanz in Navigationsverlauf beibehalten wird, oder legt diesen fest.

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

Eigenschaftswert

true, wenn die Page-Instanz im Navigationsverlauf beibehalten wird, andernfalls false. Der Standardwert ist false.

Beispiele

Das folgende Beispiel zeigt, wie Xaml verwendet wird, um eine Instanz der Page -Klasse über mehrere Navigationen hinweg beizubehalten.

<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

Hinweise

Wenn eine Seite zum ersten Mal zu navigiert wird, wird eine neue Instanz der Page -Klasse erstellt. Wenn eine Seite weg navigiert wird (entweder rückwärts oder vorwärts), wird dem Navigationsverlauf ein Eintrag für die Seite hinzugefügt. Standardmäßig verweist der Eintrag nicht auf das Seitenobjekt. Stattdessen enthält der Eintrag einen URI (Uniform Resource Identifier) für die Seite. Wenn der Eintrag für die Seite mithilfe des Navigationsverlaufs zu navigiert wird, wird der Paket-URI verwendet, um eine neue Instanz der Seite zu erstellen. Dieses Verhalten ist die Standardeinstellung, um übermäßige Arbeitsspeicherauslastung zu vermeiden: Die Beibehaltung von Seiteninstanzen kann schnell Arbeitsspeicher verbrauchen, insbesondere solche mit einer nichttrivialen Menge an Inhalt. Dieses Problem wird durch die Tatsache ergänzt, dass es keine Begrenzung der Anzahl von Einträgen gibt, die in den Zurück- und Vorwärtsstapeln des Navigationsverlaufs gespeichert werden können. Im Gegensatz dazu hat das Speichern von Pack-URIs für Seiten praktisch keine Auswirkungen auf den Speicherverbrauch.

Der hauptseitige Effekt beim Erstellen neuer Instanzen einer Seite besteht darin, dass der Seitenzustand von einer Instanz einer Seite zu einer anderen nicht gespeichert wird. In diesen Fällen bietet Windows Presentation Foundation mehrere Techniken zum Speichern des Zustands.

Um eine Seite aktiv zu halten, legen Sie die KeepAlive -Eigenschaft auf true fest (der Standardwert ist false).

Hinweis

Seiten, die instanziiert und mit nur Code zu navigiert werden (z. B. aufrufen Navigate), werden automatisch am Leben gehalten.

Sie sollten die Einstellung KeepAlive auf vermeiden, true es sei denn, Sie müssen:

  • Wenn eine Seite viel Inhalt enthält, kann es sehr lange dauern, bis eine Seite instanziiert wird. Wenn die Seite nicht am Leben gehalten wird und häufig zu der Seite navigiert wird, können sich die Kosten für die ständige Instanziierung der Seite negativ auf die Benutzererfahrung auswirken. Aus Leistungssicht sollten Sie sich jedoch auf die Standardeinstellungen verlassen und ein Profil für die Leistung Ihrer Anwendung erstellen. Wenn beim Testen Seiten mit Ladezeiten identifiziert werden, die unterhalb des für Ihre Anwendung erforderlichen Bereichs liegen, kann das Konfigurieren der zu erhaltenden Seiten eine Möglichkeit sein, das Problem zu lösen.

Hinweis

Einträge für seiten, die aktiv gehalten werden, werden nicht im Navigationsverlauf einer XAML-Browseranwendung (XBAP) beibehalten, wenn ein Benutzer von der XAML-Browseranwendung (XBAP) weg navigiert und zurück zur XAML-Browseranwendung (XBAP) navigiert. Nur Journaleinträge für Seiten, die nicht aktiv gehalten werden, werden im Navigationsverlauf beibehalten.

Informationen zur Abhängigkeitseigenschaft

Bezeichnerfeld KeepAliveProperty
Metadateneigenschaften auf true festgelegt Keine

Hinweis

Der Metadatentyp für diese Abhängigkeitseigenschaft ist PropertyMetadata, nicht FrameworkPropertyMetadata.

Gilt für:

Weitere Informationen