CustomContentState 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
CustomContentState 使能够浏览单个源内容的不同状态,而无需为每个后续导航重新加载源内容。
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
- 继承
-
CustomContentState
- 属性
示例
下面是重写的CustomContentState实现的示例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
注解
默认情况下, NavigationService 不会在导航历史记录中存储内容对象的实例。 相反, NavigationService 每次使用导航历史记录导航到内容对象时,都会创建内容对象的新实例。 此行为旨在避免在导航到大量内容和大量内容时占用过多的内存。 因此,从一个导航到下一个导航,不会记住内容的状态。 但是,WPF提供将一段自定义状态与某一内容导航历史记录条目关联的功能。
与导航历史记录项关联的自定义状态必须是派生自 CustomContentState的类。 使用以下技术之一将对象与导航历史记录条目相关联 CustomContentState :
调用 AddBackEntry:
在引发以下事件之一时设置 NavigatingCancelEventArgs.Content :
通过在希望自定义状态与其关联的类上实现 IProvideCustomContentState 。
注释
如果调用 AddBackEntry 方法,则必须处理 导航 事件或实现 IProvideCustomContentState。
导航到导航历史记录项时,WPF检查自定义CustomContentState 对象是否与之关联。 如果是这样,则调用 Replay 它以允许自定义 CustomContentState 对象应用从上一个导航中记住的状态。
自定义 CustomContentState 类可以重写 JournalEntryName 以更改为对象关联的导航历史记录条目 CustomContentState 显示的名称。 从各种导航器的导航 UI(浏览器或JournalEntryName)NavigationWindow中可见返回的值Frame。
派生自 CustomContentState 的类必须是可序列化的,这意味着它必须至少使用 SerializableAttribute和选择性地实现 ISerializable扩充。
Important
在自定义内容状态下存储信息时,如果不希望内容保留在内存中,则无法存储对要记住其状态的页面实例的任何引用。 这可以防止WPF释放页面实例,并破坏默认导航历史记录行为的目的。 如果必须执行此操作,请考虑改用 KeepAlive 。
构造函数
| 名称 | 说明 |
|---|---|
| CustomContentState() |
初始化 CustomContentState 类的新实例。 |
属性
| 名称 | 说明 |
|---|---|
| JournalEntryName |
获取存储在导航历史记录中的内容的名称。 值JournalEntryName从NavigationWindowFrame浏览器导航 UI 显示。 |
方法
| 名称 | 说明 |
|---|---|
| Equals(Object) |
确定指定的对象是否等于当前对象。 (继承自 Object) |
| GetHashCode() |
用作默认哈希函数。 (继承自 Object) |
| GetType() |
获取当前实例的 Type。 (继承自 Object) |
| MemberwiseClone() |
创建当前 Object的浅表副本。 (继承自 Object) |
| Replay(NavigationService, NavigationMode) |
调用以在导航发生时将状态重新应用到内容片段。 |
| ToString() |
返回一个表示当前对象的字符串。 (继承自 Object) |