Page.KeepAlive Propriedade

Definição

Obtém ou define um valor que indica se a instância Page é mantida no histórico de navegação.

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

Valor da propriedade

Boolean

true se a instância Page é mantida no histórico de navegação; caso contrário, false. O padrão é false.

Exemplos

O exemplo a seguir mostra como usar o XAML para reter uma instância da Page classe em várias navegaçãos.

<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

Comentários

Quando uma página é navegada pela primeira vez, uma nova instância da Page classe é criada. Quando uma página é navegada para longe (para trás ou para frente), uma entrada para a página é adicionada ao histórico de navegação. Por padrão, a entrada não faz referência ao objeto de página. Em vez disso, a entrada contém um URI (identificador de recurso uniforme) do pacote para a página. Quando a entrada da página é navegada para usar o histórico de navegação, o URI do pacote é usado para criar uma nova instância da página. Esse comportamento é o padrão, para evitar o uso excessivo de memória: reter instâncias de página pode consumir rapidamente a memória, especialmente aquelas com uma quantidade nãotrivial de conteúdo. Esse problema é aumentado pelo fato de que não há limite para o número de entradas que podem ser armazenadas nas pilhas para trás e para frente do histórico de navegação. Por outro lado, armazenar URIs do pacote para páginas não tem praticamente nenhum impacto no consumo de memória.

O principal efeito colateral da criação de novas instâncias de uma página é que o estado da página não é lembrado de uma instância de uma página para outra. Nesses casos, Windows Presentation Foundation oferece várias técnicas para lembrar o estado.

Para manter uma página ativa, defina a KeepAlive propriedade como true (o padrão é false).

Observação

As páginas que são instanciadas e navegadas para usar apenas o código (por exemplo, chamada Navigate), são mantidas ativas automaticamente.

Você deve evitar a configuração KeepAlive , a true menos que seja necessário:

  • Quando uma página tem muito conteúdo, pode levar muito tempo para ser instanciado. Se a página não for mantida viva e a página for navegada com frequência, o custo de instanciar constantemente a página poderá ter um impacto negativo na experiência do usuário. No entanto, do ponto de vista do desempenho, você deve contar com as configurações padrão e criar o perfil do desempenho do aplicativo; se o teste identificar páginas com tempos de carga abaixo do intervalo necessário para seu aplicativo, configurar as páginas a serem mantidas ativas poderá ser uma maneira de resolver o problema.

Observação

As entradas para páginas mantidas vivas não serão retidas no histórico de navegação de um XBAP (aplicativo de navegador XAML) se um usuário navegar para longe e voltar para o XBAP (aplicativo do navegador XAML). Somente as entradas de diário para páginas que não são mantidas vivas são retidas no histórico de navegação.

Informações da propriedade de dependência

Campo Identificador KeepAliveProperty
Propriedades de metadados definidas como true Nenhum

Observação

O tipo de metadados nessa propriedade de dependência não é PropertyMetadataFrameworkPropertyMetadata.

Aplica-se a

Confira também