Sdílet prostřednictvím


Page.KeepAlive Vlastnost

Definice

Získá nebo nastaví hodnotu, která označuje, zda Page je instance zachována v historii navigace.

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

Hodnota vlastnosti

truepokud je Page instance zachována v historii navigace, jinak . false Výchozí formát je false.

Příklady

Následující příklad ukazuje, jak pomocí XAML zachovat instanci Page třídy napříč více navigacemi.

<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

Poznámky

Při prvním přechodu na stránku se vytvoří nová instance Page třídy. Když se stránka posune mimo (zpět nebo dopředu), přidá se položka pro stránku do historie navigace. Ve výchozím nastavení položka neodkazuje na objekt stránky. Místo toho položka obsahuje identifikátor URI (Uniform Resource Identifier) balíčku pro stránku. Když se položka pro stránku přejde na pomocí historie navigace, identifikátor URI balíčku se použije k vytvoření nové instance stránky. Toto chování je výchozí, aby se zabránilo nadměrnému využití paměti: zachování instancí stránky může rychle spotřebovat paměť, zejména těch, které mají netriviální množství obsahu. Tento problém je rozšířen o skutečnost, že neexistuje žádné omezení počtu položek, které mohou být uloženy v zadních a dopředných zásobníkech historie navigace. Naproti tomu ukládání identifikátorů URI balíčků pro stránky nemá prakticky žádný vliv na využití paměti.

Hlavním vedlejším efektem vytváření nových instancí stránky je, že se stav stránky nezapamatuje z jedné instance stránky na jinou. V těchto případech Windows Presentation Foundation nabízí několik technik pro zapamatování stavu.

Chcete-li zachovat stránku při životě KeepAlive , nastavte vlastnost na true (výchozí hodnota je false).

Poznámka

Stránky, které se vytvoří instance a přejdou na pouze kód (například volání Navigate), se automaticky zachovají při životě.

Nastavení na true hodnotu byste se měli vyhnoutKeepAlive, pokud nepotřebujete:

  • Pokud má stránka hodně obsahu, může vytvoření instance trvat dlouho. Pokud se stránka neudržuje při životě a často se na stránku přechovává, náklady na neustálé vytváření instancí stránky můžou mít negativní dopad na uživatelské prostředí. Z hlediska výkonu byste se však měli spoléhat na výchozí nastavení a profilovat výkon vaší aplikace. Pokud testování identifikuje stránky s dobou načítání, která spadá pod rozsah požadovaný pro vaši aplikaci, může být konfigurace stránek, které mají být udržovány při životě, jedním ze způsobů, jak problém vyřešit.

Poznámka

Položky stránek, které jsou uchovány naživu, se nezachovají v historii navigace aplikace prohlížeče XAML (XBAP), pokud uživatel přejde z aplikace prohlížeče XAML (XBAP) a zpět do aplikace prohlížeče XAML (XBAP). V historii navigace se zachovají pouze položky deníku pro stránky, které nejsou uchovány při životě.

Informace o vlastnosti závislosti

Pole Identifikátor KeepAliveProperty
Vlastnosti metadat nastavené na true Žádné

Poznámka

Typ metadat pro tuto vlastnost závislosti je PropertyMetadata, nikoli FrameworkPropertyMetadata.

Platí pro

Viz také