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