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