Sdílet prostřednictvím


CustomContentState Třída

Definice

CustomContentState umožňuje procházet různé stavy jedné části zdrojového obsahu bez opětovného načtení zdrojového obsahu pro každou další navigaci.

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
Dědičnost
CustomContentState
Atributy

Příklady

Následuje příklad CustomContentState implementace, která přepíše 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

Poznámky

Ve výchozím nastavení NavigationService neukládá instanci objektu obsahu do historie navigace. Místo toho vytvoří novou instanci objektu obsahu pokaždé, NavigationService když na něj přejdete pomocí historie navigace. Toto chování je navržené tak, aby se zabránilo nadměrnému využití paměti, když se přechovává velké množství a velké části obsahu. V důsledku toho se stav obsahu nezapamatuje z jedné navigace na další. WPF ale umožňuje přidružit část vlastního stavu k položce historie navigace pro část obsahu.

Vlastní stav přidružený k položce historie navigace musí být třída odvozená z CustomContentState. Objekt můžete přidružit CustomContentState k položce historie navigace pomocí jedné z následujících technik:

Poznámka

Pokud voláte Metodu AddBackEntry , musíte zpracovat navigating událost nebo implementovat IProvideCustomContentState.

Když přejdete na položku historie navigace, WPF zkontroluje, jestli je k ní přidružený vlastní CustomContentState objekt. Pokud ano, zavolá Replay , aby vlastní CustomContentState objekt mohl použít stav, který si zapamatoval z předchozí navigace.

Vlastní CustomContentState třída může přepsat JournalEntryName a změnit název, který se zobrazí pro položku historie navigace, ke které CustomContentState je objekt přidružen. Vrácená hodnota JournalEntryName je viditelná v uživatelském rozhraní navigace různých navigátorů (prohlížeč, NavigationWindownebo Frame).

Třída odvozená z CustomContentState musí být serializovatelná, což znamená, že musí být alespoň rozšířena o SerializableAttributea volitelně implementovat ISerializable.

Důležité

Když ukládáte informace ve vlastním stavu obsahu, nemůžete ukládat žádné odkazy na instanci stránky, pro kterou si pamatujete stav, pokud nechcete, aby se obsah uchováoval v paměti. To zabraňuje WPF z uvolnění instance stránky a porazí účel výchozího chování historie navigace. Pokud to musíte udělat, zvažte místo toho použití KeepAlive .

Konstruktory

CustomContentState()

Inicializuje novou instanci CustomContentState třídy .

Vlastnosti

JournalEntryName

Získá název obsahu, který je uložen v historii navigace. Hodnota se JournalEntryName zobrazí v NavigationWindowuživatelském rozhraní navigace v prohlížeči , Framea .

Metody

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí hashovací funkce.

(Zděděno od Object)
GetType()

Type Získá z aktuální instance.

(Zděděno od Object)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
Replay(NavigationService, NavigationMode)

Volána k opětovnému použití stavu části obsahu při navigaci.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Platí pro

Viz také