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 gösteren 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 (geri veya ileri) uzaklaşıldığında, gezinti geçmişine sayfa için bir giriş eklenir. Varsayılan olarak, girdi 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ılandır: Sayfa örneklerinin saklanması, ö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, paket URI'lerini sayfalar için 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 hatırlanmamasıdır. Bu gibi durumlarda, Windows Presentation Foundation durumu hatırlamak için çeşitli teknikler sunar.
Bir sayfayı canlı tutmak için özelliğini olarak ayarlarsınız KeepAlive (varsayılan değer olurfalse).true
Uyarı
Örneklenen ve yalnızca kod kullanılarak (örneğin, çağırarak Navigate) gidilen sayfalar otomatik olarak canlı tutulur.
Şunu yapmanız gerekmediği sürece ayarından KeepAlivetrue kaçınmanız gerekir:
- Bir sayfanın çok fazla içeriği olduğunda, örnek oluşturması uzun zaman alabilir. Sayfa canlı tutulmuyorsa ve sayfaya sık sık gidiliyorsa, sayfayı sürekli örneklemenin maliyeti kullanıcı deneyimini olumsuz etkileyebilir. 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, yük süreleri uygulamanız için gereken aralığın altına düşen sayfaları tanımlarsa, sayfaların canlı tutulacak şekilde yapılandırılması sorunu çözmenin bir yolu olabilir.
Uyarı
Bir kullanıcı XAML tarayıcı uygulamasından (XBAP) uzaklaşıp geri giderse, canlı tutulan sayfaların girdileri 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 girişleri korunur.
Bağımlılık Özelliği Bilgileri
| Öğe | Değer |
|---|---|
| Tanımlayıcı alanı | KeepAliveProperty |
Meta veri özellikleri olarak ayarlandı true |
Hiçbiri |
Uyarı
Bu bağımlılık özelliğindeki PropertyMetadatameta veri türü değildir FrameworkPropertyMetadata.