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 es, durch verschiedene Zustände eines einzelnen Quellinhalts zu navigieren, ohne den Quellinhalt für jede nachfolgende Navigation neu zu laden.
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 sehen Sie ein Beispiel für eine CustomContentState Implementierung, die außer Kraft gesetzt wird 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
Speichert standardmäßig NavigationService keine Instanz eines Inhaltsobjekts im Navigationsverlauf. NavigationService Erstellt stattdessen bei jeder Navigation mithilfe des Navigationsverlaufs eine neue Instanz des Inhaltsobjekts. Dieses Verhalten wurde entwickelt, um übermäßige Arbeitsspeichernutzung zu vermeiden, wenn große Zahlen 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, einen benutzerdefinierten Zustand mit dem Navigationsverlaufseintrag für einen Teil des Inhalts zu verknüpfen.
Benutzerdefinierter Zustand, der einem Navigationsverlaufseintrag zugeordnet ist, muss eine Klasse sein, von CustomContentStateder abgeleitet wird. Sie ordnen ein CustomContentState Objekt einem Navigationsverlaufseintrag zu, indem Sie eine der folgenden Techniken verwenden:
Aufrufen von AddBackEntry:
Festlegen NavigatingCancelEventArgs.Content , wenn eines der folgenden Ereignisse ausgelöst wird:
Durch die Implementierung IProvideCustomContentState für die Klasse, die benutzerdefinierten Zustand zugeordnet werden soll.
Note
Wenn Sie die AddBackEntry-Methode aufrufen, müssen Sie das Navigationsereignis behandeln oder implementieren IProvideCustomContentState.
Wenn der Navigationsverlaufseintrag navigiert wird, überprüft WPF, ob ein benutzerdefiniertes CustomContentState-Objekt damit verknüpft ist. Wenn ja, wird Replay aufgerufen, damit das benutzerdefinierte CustomContentState Objekt den Zustand anwenden kann, den es aus der vorherigen Navigation gespeichert hat.
Eine benutzerdefinierte CustomContentState Klasse kann außer Kraft setzen JournalEntryName , um den Namen zu ändern, der für den Navigationsverlaufseintrag angezeigt wird, dem das CustomContentState Objekt zugeordnet ist. Der zurückgegebene Wert JournalEntryName wird von der Navigationsbenutzeroberfläche der verschiedenen Navigatoren (Browser, NavigationWindowoder Frame) angezeigt.
Eine Klasse, die von CustomContentState dieser abgeleitet wird, muss serialisierbar sein, was bedeutet, dass sie mindestens erweitert SerializableAttributeund optional implementiert ISerializablewerden muss.
Important
Wenn Sie Informationen im benutzerdefinierten Inhaltszustand speichern, können Sie keine Verweise auf die Instanz der Seite speichern, für die Sie sich erinnern, wenn der Inhalt nicht im Arbeitsspeicher aufbewahrt werden soll. Dadurch wird verhindert, dass WPF die Seiteninstanz freigeben und den Zweck des Standardmäßigen Navigationsverlaufsverhaltens besiegt. Wenn Sie dies tun müssen, sollten Sie stattdessen die Verwendung in Betracht ziehen KeepAlive .
Konstruktoren
| Name | Beschreibung |
|---|---|
| CustomContentState() |
Initialisiert eine neue Instanz der CustomContentState-Klasse. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| JournalEntryName |
Ruft den Namen für den Inhalt ab, der im Navigationsverlauf gespeichert ist. Der Wert wird JournalEntryName von NavigationWindowder FrameBenutzeroberfläche der Browsernavigation angezeigt. |
Methoden
| Name | Beschreibung |
|---|---|
| Equals(Object) |
Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht. (Geerbt von Object) |
| GetHashCode() |
Dient als Standardhashfunktion. (Geerbt von Object) |
| GetType() |
Ruft die Type der aktuellen Instanz ab. (Geerbt von Object) |
| MemberwiseClone() |
Erstellt eine flache Kopie der aktuellen Object. (Geerbt von Object) |
| Replay(NavigationService, NavigationMode) |
Wird aufgerufen, um den Zustand erneut auf einen Teil des Inhalts zu anwenden, wenn die Navigation auftritt. |
| ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |