Page.KeepAlive Properti
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Mendapatkan atau menetapkan nilai yang menunjukkan apakah Page instans dipertahankan dalam riwayat navigasi.
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
Nilai Properti
true
Page jika instans dipertahankan dalam riwayat navigasi; jika tidak, false. Defaultnya adalah false.
Contoh
Contoh berikut menunjukkan cara menggunakan XAML untuk mempertahankan instans Page kelas di beberapa navigasi.
<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
Keterangan
Saat halaman pertama kali dinavigasi, instans Page baru kelas dibuat. Saat halaman dinavigasi menjauh (baik kembali atau maju), entri untuk halaman ditambahkan ke riwayat navigasi. Secara default, entri tidak mereferensikan objek halaman. Sebagai gantinya, entri berisi pengidentifikasi sumber daya seragam paket (URI) untuk halaman tersebut. Ketika entri untuk halaman dinavigasi untuk menggunakan riwayat navigasi, URI paket digunakan untuk membuat instans baru halaman. Perilaku ini adalah default, untuk menghindari penggunaan memori yang berlebihan: mempertahankan instans halaman dapat dengan cepat mengonsumsi memori, terutama yang memiliki jumlah konten nontrivial. Masalah ini ditambahkan oleh fakta bahwa tidak ada batasan jumlah entri yang dapat disimpan di tumpukan belakang dan maju riwayat navigasi. Sebaliknya, menyimpan URI paket untuk halaman hampir tidak berdampak pada konsumsi memori.
Efek samping utama dari membuat instans baru halaman adalah bahwa status halaman tidak diingat dari satu instans halaman ke instans halaman lainnya. Dalam kasus ini, Windows Presentation Foundation menawarkan beberapa teknik untuk mengingat keadaan.
Untuk menjaga halaman tetap hidup, Anda mengatur properti ke KeepAlivetrue (defaultnya adalah false).
Nota
Halaman yang dibuat dan dinavigasi untuk hanya menggunakan kode (misalnya, memanggil Navigate), secara otomatis tetap hidup.
Anda harus menghindari pengaturan KeepAlive ke true kecuali Anda perlu:
- Ketika halaman memiliki banyak konten, mungkin perlu waktu lama untuk membuat instans. Jika halaman tidak tetap hidup, dan halaman sering dinavigasi, biaya terus-menerus membuat halaman mungkin berdampak negatif pada pengalaman pengguna. Namun, dari perspektif performa, Anda harus mengandalkan pengaturan default dan memprofilkan performa aplikasi Anda; jika pengujian mengidentifikasi halaman dengan waktu muat yang berada di bawah rentang yang diperlukan untuk aplikasi Anda, mengonfigurasi halaman agar tetap hidup mungkin merupakan salah satu cara untuk menyelesaikan masalah.
Nota
Entri untuk halaman yang tetap hidup tidak dipertahankan dalam riwayat navigasi aplikasi browser XAML (XBAP) jika pengguna menavigasi jauh dari dan kembali ke aplikasi browser XAML (XBAP). Hanya entri jurnal untuk halaman yang tidak dihidupkan yang dipertahankan dalam riwayat navigasi.
Informasi Properti Dependensi
| Item | Nilai |
|---|---|
| Bidang pengidentifikasi | KeepAliveProperty |
Properti metadata diatur ke true |
Tidak |
Nota
Jenis metadata pada properti dependensi ini adalah PropertyMetadata, bukan FrameworkPropertyMetadata.