CustomContentState Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
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 класс, который хочет связать с ним пользовательское состояние.
Note
При вызове метода AddBackEntry необходимо обработать событие Навигации или реализовать IProvideCustomContentState.
При переходе к записи журнала навигации WPF проверяет, связан ли с ним пользовательский объект CustomContentState. Если да, он позволяет Replay пользовательскому CustomContentState объекту применять состояние, которое он запоминает из предыдущей навигации.
Настраиваемый CustomContentState класс может переопределить JournalEntryName , чтобы изменить имя, отображаемое для записи журнала навигации, к которой CustomContentState связан объект. Значение, возвращаемое JournalEntryName из пользовательского интерфейса навигации различных навигаторов (браузер, NavigationWindowили Frame).
Класс, производный от CustomContentState класса, должен быть сериализуемым, что означает, что он должен быть по крайней мере дополнен и SerializableAttributeпри необходимости реализован ISerializable.
Important
При хранении сведений в пользовательском состоянии содержимого нельзя хранить ссылки на экземпляр страницы, для которой запоминается состояние, если содержимое не должно храниться в памяти. Это позволяет WPF освободить экземпляр страницы и победить цель поведения журнала навигации по умолчанию. Если это необходимо сделать, рассмотрите возможность использования KeepAlive .
Конструкторы
| Имя | Описание |
|---|---|
| CustomContentState() |
Инициализирует новый экземпляр класса CustomContentState. |
Свойства
| Имя | Описание |
|---|---|
| JournalEntryName |
Возвращает имя содержимого, хранящегося в журнале навигации. Значение отображается в JournalEntryNameNavigationWindowпользовательском Frame интерфейсе навигации браузера , а также в пользовательском интерфейсе навигации браузера. |
Методы
| Имя | Описание |
|---|---|
| Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
| GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
| GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| Replay(NavigationService, NavigationMode) |
Вызывается для повторного применения состояния к фрагменту содержимого при переходе. |
| ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |