CustomContentState Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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:
Volání AddBackEntry:
Nastavení NavigatingCancelEventArgs.Content při vyvolání jedné z následujících událostí:
Implementací IProvideCustomContentState do třídy, která chce, aby k ní byl přidružen vlastní stav.
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) |