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), автоматически сохраняются в живых.
Следует избегать настройки KeepAlive , true если вам не нужно:
- Если страница содержит много содержимого, создание экземпляра может занять много времени. Если страница не хранится в живых, и страница часто перемещается, стоимость постоянного создания экземпляра страницы может негативно повлиять на взаимодействие с пользователем. Однако с точки зрения производительности следует полагаться на параметры по умолчанию и профилировать производительность приложения; Если тестирование идентифицирует страницы с временем загрузки, которые падают ниже диапазона, необходимого для приложения, настройка страниц для сохранения в живых может быть одним из способов решения проблемы.
Замечание
Записи для страниц, которые хранятся в живых, не сохраняются в журнале навигации приложения браузера XAML (XBAP), если пользователь переходит от приложения браузера XAML (XBAP). Только записи журнала для страниц, которые не хранятся в живых, сохраняются в журнале навигации.
Сведения о свойстве зависимостей
| Элемент | Ценность |
|---|---|
| Поле идентификатора | KeepAliveProperty |
Свойства метаданных, равные свойству true |
Нет |
Замечание
Тип метаданных для этого свойства зависимостей , PropertyMetadataа не FrameworkPropertyMetadata.