Page.KeepAlive Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Получает или задает значение, которое указывает, сохраняется ли экземпляр Page в журнале переходов.
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
Значение свойства
true
, если экземпляр Page сохраняется в журнале переходов; в противном случае — false
. Значение по умолчанию — false
.
Примеры
В следующем примере показано, как использовать XAML для сохранения экземпляра класса в Page нескольких навигациях.
<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
Комментарии
При первом переходе на страницу создается новый экземпляр Page класса . При переходе с страницы (назад или вперед) запись для страницы добавляется в журнал навигации. По умолчанию запись не ссылается на объект страницы. Вместо этого запись содержит универсальный код ресурса (URI) пакета для страницы. При переходе к записи страницы с помощью журнала навигации URI пакета используется для создания нового экземпляра страницы. Это поведение используется по умолчанию, чтобы избежать чрезмерного использования памяти: сохранение экземпляров страниц может быстро потреблять память, особенно с нетривиальным объемом содержимого. Эта проблема дополняется тем фактом, что нет ограничений на количество записей, которые могут храниться в стеке назад и вперед в журнале навигации. Напротив, хранение URI пакетов для страниц практически не влияет на потребление памяти.
Основной побочный эффект создания новых экземпляров страницы заключается в том, что состояние страницы не запоминается из одного экземпляра страницы в другой. В таких случаях Windows Presentation Foundation предлагает несколько методов запоминания состояния.
Чтобы сохранить страницу в активном состоянии, необходимо задать KeepAlive для свойства значение true
(по умолчанию — false
).
Примечание
Страницы, экземпляры которых создаются и к которым осуществляется переход с помощью только кода (например, вызова Navigate), автоматически сохраняются в активном состоянии.
Не следует задавать значение , KeepAlivetrue
если не требуется:
- Если на странице много содержимого, создание экземпляра может занять много времени. Если страница не поддерживается и на нее часто осуществляется переход, стоимость постоянного создания экземпляра страницы может негативно повлиять на взаимодействие с пользователем. Однако с точки зрения производительности следует полагаться на параметры по умолчанию и профилировать производительность приложения. Если при тестировании идентифицируются страницы с временем загрузки, которые не соответствуют диапазону, необходимому для приложения, одним из способов решения проблемы может быть настройка страниц для сохранения активности.
Примечание
Записи для страниц, которые хранятся в активном состоянии, не сохраняются в журнале навигации приложения браузера XAML (XBAP), если пользователь переходит из приложения браузера XAML (XBAP) и обратно в него. В журнале навигации сохраняются только записи журнала для страниц, которые не хранятся в активном состоянии.
Сведения о свойстве зависимостей
Поле идентификатора | KeepAliveProperty |
Для свойств метаданных задано значение true |
Нет |
Примечание
Тип метаданных для этого свойства зависимостей — , а PropertyMetadataне FrameworkPropertyMetadata.