Page.KeepAlive Właściwość
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera lub ustawia wartość wskazującą, czy Page wystąpienie jest zachowywane w historii nawigacji.
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
Wartość właściwości
true
Page jeśli wystąpienie jest zachowywane w historii nawigacji; w przeciwnym razie false
. Wartość domyślna to false
.
Przykłady
W poniższym przykładzie pokazano, jak za pomocą języka XAML zachować wystąpienie Page klasy w wielu nawigacji.
<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
Uwagi
Po pierwszym przejściu do strony zostanie utworzone nowe wystąpienie Page klasy. Po przejściu do strony (z powrotem lub do przodu) do historii nawigacji zostanie dodany wpis strony. Domyślnie wpis nie odwołuje się do obiektu strony. Zamiast tego wpis zawiera jednolity identyfikator zasobu pakietu (URI) dla strony. Po przejściu do wpisu strony przy użyciu historii nawigacji identyfikator URI pakietu jest używany do tworzenia nowego wystąpienia strony. To zachowanie jest domyślne, aby uniknąć nadmiernego użycia pamięci: przechowywanie wystąpień stron może szybko zużywać pamięć, szczególnie w przypadku nietrivialnej ilości zawartości. Ten problem jest rozszerzony przez fakt, że nie ma limitu liczby wpisów, które mogą być przechowywane w stosach wstecz i do przodu historii nawigacji. Natomiast przechowywanie identyfikatorów URI pakietów dla stron nie ma praktycznie wpływu na zużycie pamięci.
Głównym efektem ubocznym tworzenia nowych wystąpień strony jest to, że stan strony nie jest zapamiętany z jednego wystąpienia strony do innego. W takich przypadkach Windows Presentation Foundation oferuje kilka technik zapamiętowania stanu.
Aby zachować żywą stronę, należy ustawić KeepAlive właściwość na true
(wartość domyślna to false
).
Uwaga
Strony, które są tworzone i nawigowane do używania tylko kodu (na przykład wywołania Navigate), są automatycznie zachowywane przy życiu.
Należy unikać ustawienia KeepAlive , true
chyba że musisz:
- Utworzenie wystąpienia strony może zająć dużo czasu. Jeśli strona nie jest aktywna, a strona jest często nawigowana, koszt ciągłego tworzenia wystąpienia strony może mieć negatywny wpływ na środowisko użytkownika. Jednak z perspektywy wydajności należy opierać się na domyślnych ustawieniach i profilować wydajność aplikacji; jeśli testowanie identyfikuje strony z czasem ładowania, które spadną poniżej zakresu wymaganego dla aplikacji, skonfigurowanie stron, które będą aktywne, może być jednym ze sposobów rozwiązania problemu.
Uwaga
Wpisy stron, które są aktywne, nie są zachowywane w historii nawigacji aplikacji przeglądarki XAML (XBAP), jeśli użytkownik przechodzi z dala od i z powrotem do aplikacji przeglądarki XAML (XBAP). Tylko wpisy dziennika dla stron, które nie są przechowywane przy życiu, są zachowywane w historii nawigacji.
Informacje dotyczące właściwości zależności
Pole identyfikatora | KeepAliveProperty |
Właściwości metadanych ustawione na true |
Brak |
Uwaga
Typ metadanych dla tej właściwości zależności to PropertyMetadata, a nie FrameworkPropertyMetadata.