CustomContentState Sınıf
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.
CustomContentState , sonraki her gezinti için kaynak içeriği yeniden yüklemeden tek bir kaynak içeriğin farklı durumlarına gitme olanağı sağlar.
public ref class CustomContentState abstract
[System.Serializable]
public abstract class CustomContentState
public abstract class CustomContentState
[<System.Serializable>]
type CustomContentState = class
type CustomContentState = class
Public MustInherit Class CustomContentState
- Devralma
-
CustomContentState
- Öznitelikler
Örnekler
Aşağıda, öğesini geçersiz kılan bir CustomContentState uygulama örneği verilmiştir JournalEntryName.
using System;
using System.Windows.Controls;
using System.Windows.Navigation;
[Serializable]
public class MyCustomContentState : CustomContentState
{
string dateCreated;
TextBlock dateTextBlock;
public MyCustomContentState(string dateCreated, TextBlock dateTextBlock)
{
this.dateCreated = dateCreated;
this.dateTextBlock = dateTextBlock;
}
public override string JournalEntryName
{
get
{
return "Journal Entry " + this.dateCreated;
}
}
public override void Replay(NavigationService navigationService, NavigationMode mode)
{
this.dateTextBlock.Text = this.dateCreated;
}
}
Imports System.Windows.Controls
Imports System.Windows.Navigation
<Serializable>
Public Class MyCustomContentState
Inherits CustomContentState
Private dateCreated As String
Private dateTextBlock As TextBlock
Public Sub New(ByVal dateCreated As String, ByVal dateTextBlock As TextBlock)
Me.dateCreated = dateCreated
Me.dateTextBlock = dateTextBlock
End Sub
Public Overrides ReadOnly Property JournalEntryName() As String
Get
Return "Journal Entry " & Me.dateCreated
End Get
End Property
Public Overrides Sub Replay(ByVal navigationService As NavigationService, ByVal mode As NavigationMode)
Me.dateTextBlock.Text = Me.dateCreated
End Sub
End Class
Açıklamalar
Varsayılan olarak, NavigationService içerik nesnesinin bir örneğini gezinti geçmişinde depolamaz. Bunun yerine, NavigationService gezinti geçmişini kullanarak içerik nesnesinin her gidildiğinde yeni bir örneğini oluşturur. Bu davranış, çok sayıda ve büyük içerik parçalarına gidilirken aşırı bellek tüketiminden kaçınmak için tasarlanmıştır. Sonuç olarak, içeriğin durumu bir gezintiden diğerine anımsanmıyor. Ancak WPF, bir içerik parçası için gezinti geçmişi girişiyle özel durum parçası ilişkilendirme olanağı sağlar.
Gezinti geçmişi girişiyle ilişkili özel durum, öğesinden CustomContentStatetüretilen bir sınıf olmalıdır. Aşağıdaki tekniklerden birini kullanarak bir CustomContentState nesneyi gezinti geçmişi girişiyle ilişkilendirirsiniz:
AddBackEntry Çağrılır:
NavigatingCancelEventArgs.Content Aşağıdaki olaylardan birinin tetiklendiğinde ayar:
Özel durumun kendisiyle ilişkilendirilmesi isteyen sınıfını uygulayarak IProvideCustomContentState .
Not
AddBackEntry yöntemini çağırırsanız, Gezinme olayını işlemeniz veya uygulamanız IProvideCustomContentStategerekir.
Gezinti geçmişi girdisine gidildiğinde WPF, özel CustomContentState bir nesnenin onunla ilişkilendirilmiş olup olmadığını denetler. Bu durumda, özel CustomContentState nesnenin önceki gezintide anımsanmış olduğu durumu uygulamasına izin vermek için öğesini çağırırReplay.
Özel CustomContentState bir sınıf, nesnenin ilişkilendirildiği CustomContentState gezinti geçmişi girdisi için görünen adı değiştirmek için geçersiz kılabilirJournalEntryName. Döndüren JournalEntryName değer, çeşitli gezginlerin gezinti kullanıcı arabiriminden görünür (tarayıcı, NavigationWindowveya Frame).
öğesinden CustomContentState türetilen bir sınıf serileştirilebilir olmalıdır; bu da en azından ile SerializableAttributegenişletilmesi ve isteğe bağlı olarak uygulaması ISerializablegerektiği anlamına gelir.
Önemli
Bilgileri özel içerik durumunda depoladığınızda, içeriğin bellekte tutulmasını istemiyorsanız, durumunu hatırladığınız sayfanın örneğine yönelik başvuruları depolayamazsınız. Bu, WPF'nin sayfa örneğini serbest bırakmasını engeller ve varsayılan gezinti geçmişi davranışının amacını alt eder. Bunu yapmanız gerekiyorsa, bunun yerine kullanmayı KeepAlive göz önünde bulundurun.
Oluşturucular
CustomContentState() |
CustomContentState sınıfının yeni bir örneğini başlatır. |
Özellikler
JournalEntryName |
Gezinti geçmişinde depolanan içeriğin adını alır. değeri JournalEntryName , Frameve tarayıcı gezinti kullanıcı arabiriminden NavigationWindowgörüntülenir. |
Yöntemler
Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
GetType() |
Type Geçerli örneğini alır. (Devralındığı yer: Object) |
MemberwiseClone() |
Geçerli Objectöğesinin sığ bir kopyasını oluşturur. (Devralındığı yer: Object) |
Replay(NavigationService, NavigationMode) |
Gezinti gerçekleştiğinde bir içerik parçasını yeniden uygulamak için çağrılır. |
ToString() |
Geçerli nesneyi temsil eden dizeyi döndürür. (Devralındığı yer: Object) |