Page.KeepAlive Özellik

Tanım

Örneğin gezinti geçmişinde tutulup tutulmadığını Page belirten bir değer alır veya ayarlar.

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

Özellik Değeri

truePage örnek gezinti geçmişinde tutulursa; değilse, false. Varsayılan değer: false.

Örnekler

Aşağıdaki örnekte, birden çok gezintide sınıfın bir örneğini korumak için XAML'nin Page nasıl kullanılacağı gösterilmektedir.

<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

Açıklamalar

Sayfaya ilk gidildiğinde, sınıfın Page yeni bir örneği oluşturulur. Bir sayfadan uzaklaşıldığında (geri veya ileri), gezinti geçmişine sayfa için bir giriş eklenir. Varsayılan olarak, giriş sayfa nesnesine başvurmaz. Bunun yerine, giriş sayfa için bir paket tekdüzen kaynak tanımlayıcısı (URI) içerir. Sayfa girişi gezinti geçmişi kullanılarak adresine gidildiğinde, sayfanın yeni bir örneğini oluşturmak için paket URI'si kullanılır. Bu davranış, aşırı bellek kullanımını önlemek için varsayılan davranıştır: Sayfa örneklerinin korunması, özellikle de önemsiz miktarda içeriğe sahip olanlar için belleği hızla tüketebilir. Bu sorun, gezinti geçmişinin arka ve ileri yığınlarında depolanabilecek girdi sayısıyla ilgili bir sınır olmaması nedeniyle artırılır. Buna karşılık, sayfaların paket URI'lerini depolamanın bellek tüketimi üzerinde neredeyse hiçbir etkisi yoktur.

Sayfanın yeni örneklerini oluşturmanın ana yan etkisi, sayfa durumunun sayfanın bir örneğinden diğerine anımsanmamasıdır. Bu durumlarda, Windows Presentation Foundation durumu hatırlamak için çeşitli teknikler sunar.

Sayfayı canlı tutmak için özelliğini true olarak ayarlarsınız KeepAlive (varsayılan değerdirfalse).

Not

Örneklenen ve yalnızca kod kullanılarak (örneğin, çağırma Navigate) gidilen sayfalar otomatik olarak canlı tutulur.

Aşağıdakiler gerekmiyorsa ayarından KeepAlivetrue kaçınmanız gerekir:

  • Bir sayfada çok fazla içerik olduğunda, örnek oluşturmak uzun zaman alabilir. Sayfa canlı tutulmazsa ve sayfaya sık sık gidilirse, sayfayı sürekli örneklemenin maliyeti kullanıcı deneyimi üzerinde olumsuz bir etkiye sahip olabilir. Ancak performans açısından bakıldığında varsayılan ayarlara güvenmeniz ve uygulamanızın performansının profilini oluşturmanız gerekir; Test, uygulamanız için gereken aralığın altında kalan yükleme süreleri olan sayfaları tanımlarsa, sayfaların canlı tutulacak şekilde yapılandırılması sorunu çözmenin bir yolu olabilir.

Not

Bir kullanıcı XAML tarayıcı uygulamasından (XBAP) uzaklaşıp geri giderse, canlı tutulan sayfaların girdileri bir XAML tarayıcı uygulamasının (XBAP) gezinti geçmişinde korunmaz. Gezinti geçmişinde yalnızca canlı tutulmayan sayfaların günlük girdileri korunur.

Bağımlılık Özelliği Bilgileri

Tanımlayıcı alanı KeepAliveProperty
Meta veri özellikleri olarak ayarlandı true Hiçbiri

Not

Bu bağımlılık özelliğindeki meta veri türü değildirPropertyMetadataFrameworkPropertyMetadata.

Şunlara uygulanır

Ayrıca bkz.