CustomContentState Klass
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
CustomContentState gör det möjligt att navigera i olika tillstånd i ett enda källinnehåll utan att läsa in källinnehållet på nytt för varje efterföljande navigering.
public ref class CustomContentState abstract
[System.Serializable]
public abstract class CustomContentState
[<System.Serializable>]
type CustomContentState = class
Public MustInherit Class CustomContentState
- Arv
-
CustomContentState
- Attribut
Exempel
Följande är ett exempel på en CustomContentState implementering som åsidosätter 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
Kommentarer
Som standard NavigationService lagrar inte en instans av ett innehållsobjekt i navigeringshistoriken. NavigationService Skapar i stället en ny instans av innehållsobjektet varje gång det navigeras till med hjälp av navigeringshistorik. Det här beteendet är utformat för att undvika överdriven minnesförbrukning när stora mängder och stora delar av innehållet navigeras till. Det innebär att innehållets tillstånd inte kommer ihåg från en navigering till en annan. Men WPF ger möjlighet att associera ett anpassat tillstånd med navigeringshistorikposten för ett innehåll.
Anpassat tillstånd som är associerat med en navigeringshistorikpost måste vara en klass som härleds från CustomContentState. Du associerar ett CustomContentState objekt med en navigeringshistorikpost med hjälp av någon av följande tekniker:
Anropa AddBackEntry:
Ange NavigatingCancelEventArgs.Content när någon av följande händelser aktiveras:
Genom att implementera IProvideCustomContentState den klass som vill att anpassat tillstånd ska associeras med den.
Note
Om du anropar metoden AddBackEntry måste du hantera händelsen Navigera eller implementera IProvideCustomContentState.
När navigeringshistorikposten navigeras till kontrollerar WPF om ett anpassat CustomContentState objekt är associerat med det. I så fall anropas Replay det för att tillåta att det anpassade CustomContentState objektet tillämpar det tillstånd som det kom ihåg från föregående navigering.
En anpassad CustomContentState klass kan åsidosätta JournalEntryName för att ändra namnet som visas för navigeringshistorikposten som CustomContentState objektet är associerat med. Värdet som JournalEntryName returneras visas från navigeringsgränssnittet för de olika navigatörerna (webbläsare, NavigationWindoweller Frame).
En klass som härleds från CustomContentState måste vara serialiserbar, vilket innebär att den åtminstone måste utökas med SerializableAttributeoch eventuellt implementera ISerializable.
Important
När du lagrar information i anpassat innehållstillstånd kan du inte lagra några referenser till instansen av sidan som du kommer ihåg tillstånd för om du inte vill att innehållet ska behållas i minnet. Detta förhindrar WPF från att släppa sidinstansen och motverkar syftet med standardbeteendet för navigeringshistorik. Om du måste göra detta bör du överväga att använda KeepAlive i stället.
Konstruktorer
| Name | Description |
|---|---|
| CustomContentState() |
Initierar en ny instans av CustomContentState klassen. |
Egenskaper
| Name | Description |
|---|---|
| JournalEntryName |
Hämtar namnet på innehållet som lagras i navigeringshistoriken. Värdet för JournalEntryName visas från NavigationWindow, Frameoch webbläsarnavigeringsgränssnittet. |
Metoder
| Name | Description |
|---|---|
| Equals(Object) |
Avgör om det angivna objektet är lika med det aktuella objektet. (Ärvd från Object) |
| GetHashCode() |
Fungerar som standard-hash-funktion. (Ärvd från Object) |
| GetType() |
Hämtar den aktuella instansen Type . (Ärvd från Object) |
| MemberwiseClone() |
Skapar en ytlig kopia av den aktuella Object. (Ärvd från Object) |
| Replay(NavigationService, NavigationMode) |
Anropas för att återappa tillstånd till en del av innehållet när navigeringen sker. |
| ToString() |
Returnerar en sträng som representerar det aktuella objektet. (Ärvd från Object) |