Page.KeepAlive Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá nebo nastaví hodnotu, která urč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
true
Page pokud je instance zachována v historii navigace; jinak , false. Výchozí hodnota je false.
Příklady
Následující příklad ukazuje, jak pomocí XAML zachovat instanci Page třídy napříč několika 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ž je stránka mimo (zpět nebo vpřed), přidá se položka stránky 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ž je položka stránky přecháděná do historie navigace, identifikátor URI balíčku se použije k vytvoření nové instance stránky. Toto chování je výchozí, aby nedocházelo k nadměrnému využití paměti: Uchovávání instancí stránky může rychle spotřebovávat paměť, zejména ty, které mají netriviální množství obsahu. Tento problém je rozšířen skutečností, že neexistuje žádný limit 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 spotřebu paměti.
Hlavním vedlejším účinkem vytváření nových instancí stránky je, že stav stránky se nepamatuje z jedné instance stránky na jinou. V těchto případech nabízí Windows Presentation Foundation několik technik pro zapamatování stavu.
Pokud chcete zachovat stránku naživu, nastavíte KeepAlive vlastnost na true hodnotu (výchozí hodnota je false).
Poznámka:
Stránky, které se vytvoří instance a přejdou na použití pouze kódu (například volání Navigate), se automaticky zachovávají naživu.
Nastavení byste se měli vyhnout KeepAlive , true pokud nepotřebujete:
- Pokud má stránka hodně obsahu, vytvoření instance může trvat dlouhou dobu. Pokud stránka není stále aktivní a stránka je často přecházet, náklady na neustálé vytvoření instance stránky můžou mít negativní dopad na uživatelské prostředí. Z hlediska výkonu byste ale měli spoléhat na výchozí nastavení a profilovat výkon vaší aplikace; Pokud testování identifikuje stránky s časy načítání, které spadají pod rozsah požadovaný pro vaši aplikaci, může být konfigurace stránek, které mají být zachovány, 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 mimo 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 udržovány naživu.
Informace o vlastnosti závislosti
| Položka | Hodnota |
|---|---|
| Pole Identifikátor | KeepAliveProperty |
Vlastnosti metadat nastavené na true |
None |
Poznámka:
Typ metadat pro tuto vlastnost závislosti je PropertyMetadata, nikoli FrameworkPropertyMetadata.