Page.KeepAlive Propiedad
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene o establece un valor que indica si se conserva la instancia de Page en el historial de navegación.
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 propiedad
true
si se conserva la instancia de Page en el historial de navegación; de lo contrario, false
. De manera predeterminada, es false
.
Ejemplos
En el ejemplo siguiente se muestra cómo usar XAML para conservar una instancia de la Page clase en varias navegaciones.
<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
Comentarios
Cuando se navega por primera vez una página, se crea una nueva instancia de la Page clase . Cuando una página se aleja (ya sea hacia atrás o hacia delante), se agrega una entrada para la página al historial de navegación. De forma predeterminada, la entrada no hace referencia al objeto page. En su lugar, la entrada contiene un identificador uniforme de recursos de paquete (URI) para la página. Cuando se navega a la entrada de la página mediante el historial de navegación, el URI del paquete se usa para crear una nueva instancia de la página. Este comportamiento es el valor predeterminado, para evitar un uso excesivo de memoria: la retención de instancias de página puede consumir memoria rápidamente, especialmente aquellas con una cantidad de contenido notrivial. Este problema se incrementa por el hecho de que no hay ningún límite para el número de entradas que se pueden almacenar en las pilas posteriores y reenviadas del historial de navegación. Por el contrario, el almacenamiento de URI de paquete para páginas no tiene prácticamente ningún impacto en el consumo de memoria.
El efecto secundario principal de la creación de nuevas instancias de una página es que el estado de la página no se recuerda de una instancia de una página a otra. En estos casos, Windows Presentation Foundation ofrece varias técnicas para recordar el estado.
Para mantener activa una página, establezca la KeepAlive propiedad true
en (el valor predeterminado es false
).
Nota:
Las páginas que se crean instancias y se navegan a usando solo código (por ejemplo, llamar a Navigate), se mantienen activas automáticamente.
Debe evitar establecer KeepAlive en a true
menos que necesite:
- Cuando una página tiene mucho contenido, puede tardar mucho tiempo en crear instancias. Si la página no se mantiene activa y la página se navega con frecuencia, el costo de crear una instancia constante de la página puede tener un impacto negativo en la experiencia del usuario. Sin embargo, desde una perspectiva de rendimiento, debe confiar en la configuración predeterminada y generar perfiles de rendimiento de la aplicación; Si las pruebas identifican las páginas con tiempos de carga que se encuentran por debajo del intervalo necesario para la aplicación, configurar las páginas que se mantendrán activas puede ser una manera de solucionar el problema.
Nota:
Las entradas de las páginas que se mantienen activas no se conservan en el historial de navegación de una aplicación del explorador XAML (XBAP) si un usuario se aleja y vuelve a la aplicación del explorador XAML (XBAP). Solo las entradas del diario de las páginas que no se mantienen activas se conservan en el historial de navegación.
Información sobre propiedades de dependencia
Campo identificador | KeepAliveProperty |
Propiedades de metadatos establecidas en true |
None |
Nota
El tipo de metadatos de esta propiedad de dependencia es PropertyMetadata, no FrameworkPropertyMetadata.