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

属性值

如果在导航历史记录中保留 Page 实例,则为 true;否则为 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提供了多种用于记住状态的技术。

若要使页面保持活动状态,请将 属性设置为 KeepAlivetrue (默认值为 false) 。

注意

仅使用代码 ((例如调用 Navigate) )实例化并导航到的页面会自动保持活动状态。

KeepAlive true除非需要:

  • 当页面包含大量内容时,可能需要很长时间才能实例化。 如果页面未保持活动状态,并且经常导航到该页面,则不断实例化页面的成本可能会对用户体验产生负面影响。 但是,从性能的角度来看,应依赖于默认设置并分析应用程序的性能;如果测试发现页面的加载时间低于应用程序所需的范围,则配置页面以保持活动状态可能是解决问题的一种方法。

注意

如果用户 (XBAP) ,则保持活动状态的页面不会保留在 XAML 浏览器应用程序的导航历史记录中, (XBAP) 。 导航历史记录中仅保留未保持活动状态的页面的日记条目。

依赖项属性信息

标识符字段 KeepAliveProperty
元数据属性设置为 true

注意

此依赖属性上的元数据类型为 PropertyMetadata,而不是 FrameworkPropertyMetadata

适用于

另请参阅