Page.KeepAlive Özellik
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Ö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
true
Page ö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.