Поделиться через


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.

Применяется к

См. также раздел