CustomContentState Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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:
Wywoływanie metody AddBackEntry:
Ustawienie NavigatingCancelEventArgs.Content , gdy zostanie zgłoszone jedno z następujących zdarzeń:
Implementując IProvideCustomContentState klasę, która chce skojarzyć z nim stan niestandardowy.
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) |