Язык

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 с записью журнала навигации с помощью одного из следующих методов:

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)

Применяется к

См. также раздел