Page.KeepAlive Propriedade
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
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.