Page.KeepAlive Właściwość

Definicja

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

truePage 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.

Dotyczy

Zobacz też