Page.KeepAlive Propriedade

Definição

Recebe ou define um valor que indica se a Page instância é 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 de Propriedade

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

Exemplos

O exemplo seguinte mostra como usar XAML para manter uma instância da Page classe através de múltiplas navegações.

<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

Observações

Quando uma página é navegada pela primeira vez, cria-se uma nova instância da Page classe. Quando uma página é navegada para longe (seja para trás ou para frente), uma entrada para a página é adicionada ao histórico de navegação. Por defeito, a entrada não faz referência ao objeto página. Em vez disso, a entrada contém um identificador uniforme de recurso (URI) 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. Este comportamento é o padrão, para evitar o uso excessivo de memória: reter instâncias de página pode rapidamente consumir memória, especialmente aquelas com uma quantidade não trivial de conteúdo. Este problema é agravado pelo facto de não haver limite para o número de entradas que podem ser armazenadas nas pilhas de ida e volta do histórico de navegação. Em contraste, armazenar URIs de pacotes para páginas tem praticamente nenhum impacto no consumo de memória.

O principal efeito secundário de criar novas instâncias de uma página é que o estado da página não é recordado de uma instância para outra. Nestes casos, o Windows Presentation Foundation oferece várias técnicas para memorizar o estado.

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

Note

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

Deves evitar definir KeepAlive para true , a menos que precises:

  • Quando uma página tem muito conteúdo, pode demorar muito tempo a ser instanciada. Se a página não for mantida ativa e for frequentemente navegada, o custo de instanciar constantemente a página pode ter um impacto negativo na experiência do utilizador. No entanto, do ponto de vista do desempenho, deve confiar nas definições padrão e perfilar o desempenho da sua aplicação; Se os testes identificarem páginas com tempos de carregamento abaixo do intervalo exigido pela sua aplicação, configurar as páginas para serem mantidas ativas pode ser uma forma de resolver o problema.

Note

Entradas para páginas que são mantidas ativas não são mantidas no histórico de navegação de uma aplicação de navegador XAML (XBAP) se o utilizador navegar para fora e de volta para a aplicação de navegador XAML (XBAP). Apenas as entradas de diário das páginas que não são mantidas vivas são mantidas no histórico de navegação.

Informação de Propriedade de Dependência

Iteme Value
Campo identificador KeepAliveProperty
Propriedades dos metadados definidas como true None

Note

O tipo de metadado desta propriedade de dependência é PropertyMetadata, não FrameworkPropertyMetadata.

Aplica-se a

Ver também