Page.KeepAlive Propriedade
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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.