Page.KeepAlive プロパティ
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
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 新しいインスタンスが作成されます。 ページが (前後に) 移動すると、そのページのエントリがナビゲーション履歴に追加されます。 既定では、エントリはページ オブジェクトを参照しません。 代わりに、エントリにはページのパック の UNIFORM リソース識別子 (URI) が含まれています。 ナビゲーション履歴を使用してページのエントリが に移動すると、ページの新しいインスタンスを作成するためにパック URI が使用されます。 この動作は、メモリの過剰な使用を避けるために、既定値です。ページ インスタンスを保持すると、特にコンテンツの量が多い場合に、メモリをすばやく消費できます。 この問題は、ナビゲーション履歴の前後のスタックに格納できるエントリの数に制限が存在しないという事実によって強化されています。 これに対し、ページのパック URI を格納しても、メモリ消費量には実質的に影響しません。
ページの新しいインスタンスを作成する主な副作用は、ページの状態がページのインスタンス間で記憶されないことです。 このような場合、Windows Presentation Foundationには状態を記憶するためのいくつかの手法が用意されています。
ページを維持するには、 プロパティを にtrue
設定します KeepAlive (既定値は false
です)。
注意
インスタンス化され、コードのみを使用して に移動されたページ (呼び出し Navigateなど) は、自動的に有効な状態に保たれます。
以下を行う必要がない限り、 を にtrue
設定KeepAliveしないでください。
- ページに大量のコンテンツがある場合、インスタンス化に長い時間がかかる場合があります。 ページが維持されず、ページが頻繁に移動される場合、ページを絶えずインスタンス化するコストがユーザー エクスペリエンスに悪影響を及ぼす可能性があります。 ただし、パフォーマンスの観点からは、既定の設定に依存し、アプリケーションのパフォーマンスをプロファイルする必要があります。アプリケーションに必要な範囲を下回る読み込み時間を持つページがテストによって識別される場合は、ページを維持するように構成することが問題を解決する 1 つの方法である可能性があります。
注意
ユーザーが XAML ブラウザー アプリケーション (XBAP) との間を移動して戻る場合、存続しているページのエントリは XAML ブラウザー アプリケーション (XBAP) のナビゲーション履歴に保持されません。 ナビゲーション履歴には、保持されていないページのジャーナル エントリのみが保持されます。
依存プロパティ情報
識別子フィールド | KeepAliveProperty |
に設定されたメタデータ プロパティ true |
なし |
Note
この依存関係プロパティのメタデータ型は ではなく PropertyMetadataです FrameworkPropertyMetadata。
適用対象
こちらもご覧ください
.NET