Поделиться через


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 необходимо обработать событие Навигация или реализовать 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)

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

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