Бөлісу құралы:


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.

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

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