Udostępnij za pośrednictwem


CustomContentState Klasa

Definicja

CustomContentState umożliwia przechodzenie przez różne stany pojedynczej zawartości źródłowej bez ponownego ładowania zawartości źródłowej dla każdej kolejnej nawigacji.

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
Dziedziczenie
CustomContentState
Atrybuty

Przykłady

Poniżej przedstawiono przykład implementacji CustomContentState , która zastępuje JournalEntryNameelement .

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

Uwagi

Domyślnie NavigationService nie przechowuje wystąpienia obiektu zawartości w historii nawigacji. NavigationService Zamiast tego tworzy nowe wystąpienie obiektu zawartości przy każdym przejściu do niego przy użyciu historii nawigacji. To zachowanie zostało zaprojektowane tak, aby uniknąć nadmiernego użycia pamięci, gdy są nawigowane duże liczby i duże fragmenty zawartości. W związku z tym stan zawartości nie jest zapamiętany z jednej nawigacji do następnego. Jednak WPF umożliwia skojarzenie elementu stanu niestandardowego z wpisem historii nawigacji dla elementu zawartości.

Stan niestandardowy skojarzony z wpisem historii nawigacji musi być klasą pochodzącą z CustomContentStateklasy . Obiekt można skojarzyć CustomContentState z wpisem historii nawigacji przy użyciu jednej z następujących technik:

Uwaga

Jeśli wywołasz metodę AddBackEntry , musisz obsłużyć zdarzenie Nawigowanie lub zaimplementować IProvideCustomContentStatemetodę .

Po przejściu do wpisu historii nawigacji WPF sprawdza, czy obiekt niestandardowy CustomContentState jest z nim skojarzony. Jeśli tak, wywołania Replay umożliwiają obiektowi niestandardowemu CustomContentState zastosowanie stanu zapamiętanego z poprzedniej nawigacji.

Klasa niestandardowa CustomContentState może zastąpić JournalEntryName zmianę nazwy wyświetlanej dla wpisu historii nawigacji, do którego CustomContentState jest skojarzony obiekt. Zwracana wartość JournalEntryName jest widoczna w interfejsie użytkownika nawigacji różnych nawigatorów (przeglądarka, NavigationWindowlub Frame).

Klasa pochodząca z CustomContentState klasy musi być serializowana, co oznacza, że musi zostać rozszerzona SerializableAttributeo element , a opcjonalnie zaimplementuj ISerializable.

Ważne

W przypadku przechowywania informacji w stanie zawartości niestandardowej nie można przechowywać żadnych odwołań do wystąpienia strony, dla której jest zapamiętujący stan, jeśli nie chcesz, aby zawartość została zachowana w pamięci. Zapobiega to zwolnieniu wystąpienia strony przez WPF i ogranicza przeznaczenie domyślnego zachowania historii nawigacji. Jeśli musisz to zrobić, rozważ użycie KeepAlive zamiast tego.

Konstruktory

CustomContentState()

Inicjuje nowe wystąpienie klasy CustomContentState.

Właściwości

JournalEntryName

Pobiera nazwę zawartości przechowywanej w historii nawigacji. Wartość jest wyświetlana z NavigationWindowinterfejsu JournalEntryName użytkownika nawigacji przeglądarki , Framei przeglądarki.

Metody

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Type Pobiera bieżące wystąpienie.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
Replay(NavigationService, NavigationMode)

Wywoływane w celu ponownego zastosowania stanu do fragmentu zawartości po wystąpieniu nawigacji.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Dotyczy

Zobacz też