CustomContentState Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
CustomContentState ermöglicht das Navigieren durch verschiedene Zustände eines Quellinhalts, ohne dass dieser für jede nachfolgende Navigation erneut geladen werden muss.
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
- Vererbung
-
CustomContentState
- Attribute
Beispiele
Im Folgenden ist ein Beispiel für eine CustomContentState Implementierung aufgeführt, die außer Kraft setzt 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
Hinweise
Standardmäßig NavigationService werden keine instance eines Inhaltsobjekts im Navigationsverlauf gespeichert. Erstellt stattdessen jedes Mal mithilfe NavigationService des Navigationsverlaufs eine neue instance des Inhaltsobjekts. Dieses Verhalten wurde entwickelt, um übermäßigen Arbeitsspeicherverbrauch zu vermeiden, wenn große Mengen und große Teile von Inhalten navigiert werden. Folglich wird der Zustand des Inhalts nicht von einer Navigation zur nächsten gespeichert. WPF bietet jedoch die Möglichkeit, dem Navigationsverlaufseintrag für einen Teil des Inhalts einen benutzerdefinierten Zustand zuzuordnen.
Der benutzerdefinierte Zustand, der einem Navigationsverlaufseintrag zugeordnet ist, muss eine Klasse sein, die von CustomContentStateabgeleitet wird. Sie ordnen ein CustomContentState Objekt einem Navigationsverlaufseintrag zu, indem Sie eine der folgenden Techniken verwenden:
Aufrufen von AddBackEntry:
Einstellung NavigatingCancelEventArgs.Content , wenn eines der folgenden Ereignisse ausgelöst wird:
Indem Sie die -Klasse implementieren IProvideCustomContentState , die ihr den benutzerdefinierten Zustand zuordnen soll.
Hinweis
Wenn Sie die AddBackEntry-Methode aufrufen, müssen Sie das Navigating-Ereignis behandeln oder implementieren IProvideCustomContentState.
Wenn der Navigationsverlaufseintrag zu navigiert wird, überprüft WPF, ob ein benutzerdefiniertes CustomContentState Objekt zugeordnet ist. Wenn ja, wird aufgerufen Replay , damit das benutzerdefinierte CustomContentState Objekt den Zustand anwenden kann, den es aus der vorherigen Navigation gespeichert hat.
Eine benutzerdefinierte CustomContentState Klasse kann überschreiben JournalEntryName , um den Namen zu ändern, der für den Navigationsverlaufseintrag angezeigt wird, dem das CustomContentState Objekt zugeordnet ist. Der zurückgegebene JournalEntryName Wert ist auf der Navigationsoberfläche der verschiedenen Navigatoren (Browser, NavigationWindowoder Frame) sichtbar.
Eine Klasse, die von CustomContentState abgeleitet wird, muss serialisierbar sein, was bedeutet, dass sie mindestens mit SerializableAttributeerweitert und optional implementiert ISerializablewerden muss.
Wichtig
Wenn Sie Informationen im benutzerdefinierten Inhaltszustand speichern, können Sie keine Verweise auf die instance der Seite speichern, für die Sie sich den Zustand merken, wenn der Inhalt nicht im Arbeitsspeicher aufbewahrt werden soll. Dadurch wird verhindert, dass WPF die Seite instance freigibt, und der Zweck des standardmäßigen Navigationsverlaufsverhaltens wird verfehlt. Wenn Sie dies tun müssen, sollten Sie stattdessen die Verwendung in KeepAlive Erwägung ziehen.
Konstruktoren
CustomContentState() |
Initialisiert eine neue Instanz der CustomContentState-Klasse. |
Eigenschaften
JournalEntryName |
Ruft den Namen für den Inhalt ab, der im Navigationsverlauf gespeichert ist. Der Wert von JournalEntryName wird über die Navigationsoberfläche NavigationWindow, Frameund angezeigt. |
Methoden
Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. (Geerbt von Object) |
GetHashCode() |
Fungiert als Standardhashfunktion. (Geerbt von Object) |
GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
MemberwiseClone() |
Erstellt eine flache Kopie des aktuellen Object. (Geerbt von Object) |
Replay(NavigationService, NavigationMode) |
Wird aufgerufen, um beim Durchführen einer Navigation erneut einen Zustand auf einen Inhalt anzuwenden. |
ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |