Freigeben über


CustomContentState Klasse

Definition

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:

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)

Gilt für:

Weitere Informationen