Page.KeepAlive Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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.