CustomContentState Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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:
Chiamata di AddBackEntry:
Impostazione NavigatingCancelEventArgs.Content quando viene generato uno degli eventi seguenti:
Implementando IProvideCustomContentState nella classe che vuole che lo stato personalizzato venga associato.
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) |