Condividi tramite


CustomContentState Classe

Definizione

CustomContentState consente di navigare tra stati diversi di una sola parte di contenuto di origine senza che sia necessario ricaricare il contenuto di origine per ogni navigazione successiva.

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
Ereditarietà
CustomContentState
Attributi

Esempio

Di seguito è riportato un esempio di implementazione che esegue l'override JournalEntryNamedi CustomContentState .

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

Commenti

Per impostazione predefinita, NavigationService non archivia un'istanza di un oggetto contenuto nella cronologia di spostamento. Crea invece NavigationService una nuova istanza dell'oggetto contenuto ogni volta che viene spostata usando la cronologia di spostamento. Questo comportamento è progettato per evitare un consumo eccessivo di memoria quando vengono spostati grandi numeri e grandi parti di contenuto. Di conseguenza, lo stato del contenuto non viene ricordato da uno spostamento al successivo. WPF offre tuttavia la possibilità di associare un elemento di stato personalizzato alla voce cronologia di spostamento per un elemento di contenuto.

Lo stato personalizzato associato a una voce della cronologia di navigazione deve essere una classe che deriva da CustomContentState. Associare un CustomContentState oggetto a una voce della cronologia di navigazione usando una delle tecniche seguenti:

Nota

Se si chiama il metodo AddBackEntry , è necessario gestire l'evento Navigazione o implementare IProvideCustomContentState.

Quando la voce della cronologia di spostamento viene spostata su, WPF verifica se un oggetto personalizzato CustomContentState è associato. In tal caso, chiama Replay per consentire all'oggetto personalizzato CustomContentState di applicare lo stato ricordato dallo spostamento precedente.

Una classe personalizzata CustomContentState può eseguire l'override JournalEntryName per modificare il nome visualizzato per la voce della cronologia di spostamento a cui è associato l'oggetto CustomContentState . Il valore JournalEntryName restituito è visibile dall'interfaccia utente di spostamento dei vari navigatori (browser, NavigationWindow, o Frame).

Una classe che deriva da CustomContentState deve essere serializzabile, che significa che deve essere aumentata almeno con SerializableAttribute, e facoltativamente implementare ISerializable.

Importante

Quando si archiviano informazioni nello stato del contenuto personalizzato, non è possibile archiviare riferimenti all'istanza della pagina per cui si ricorda lo stato se non si vuole che il contenuto venga mantenuto in memoria. Ciò impedisce a WPF di rilasciare l'istanza della pagina e sconfigge lo scopo del comportamento predefinito della cronologia di navigazione. Se è necessario eseguire questa operazione, prendere in considerazione l'uso KeepAlive .

Costruttori

CustomContentState()

Inizializza una nuova istanza della classe CustomContentState.

Proprietà

JournalEntryName

Ottiene il nome per il contenuto archiviato nella cronologia di spostamento. Il valore di viene visualizzato dall'interfaccia NavigationWindowFrameutente di JournalEntryName spostamento del browser , e .

Metodi

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
Replay(NavigationService, NavigationMode)

Chiamato per applicare nuovamente lo stato a una parte di contenuto quando si verifica la navigazione.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a

Vedi anche