CustomContentState Класс

Определение

CustomContentState обеспечивает возможность перехода между разными состояниями одного фрагмента исходного содержимого без повторной загрузки исходного содержимого для каждого перехода.CustomContentState enables the ability to navigate through different states of a single piece of source content without reloading the source content for each subsequent navigation.

public ref class CustomContentState abstract
[System.Serializable]
public abstract class CustomContentState
type CustomContentState = class
Public MustInherit Class CustomContentState
Наследование
CustomContentState
Атрибуты

Примеры

Ниже приведен пример реализации CustomContentState, которая переопределяет JournalEntryName.The following is an example of a CustomContentState implementation that overrides 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 не сохраняет экземпляр объекта содержимого в журнале переходов.By default, NavigationService does not store an instance of a content object in navigation history. Вместо этого NavigationService создает новый экземпляр объекта содержимого каждый раз при переходе к с помощью журнала переходов.Instead, NavigationService creates a new instance of the content object each time it is navigated to by using navigation history. Такое поведение предназначено для предотвращения чрезмерного потребления памяти при переходе к большим числам и большим фрагментам содержимого.This behavior is designed to avoid excessive memory consumption when large numbers and large pieces of content are being navigated to. Следовательно, состояние содержимого не запоминается при переходе к следующему.Consequently, the state of the content is not remembered from one navigation to the next. Однако WPFWPF предоставляет возможность связать элемент пользовательского состояния с записью журнала навигации для фрагмента содержимого.However, WPFWPF provides the ability to associate a piece of custom state with the navigation history entry for a piece of content.

Пользовательское состояние, связанное с записью журнала переходов, должно быть классом, производным от CustomContentState.Custom state that is associated with a navigation history entry must be a class that derives from CustomContentState. Объект CustomContentState связывается с записью журнала переходов с помощью одного из следующих методов:You associate a CustomContentState object with a navigation history entry by using one of the following techniques:

Примечание

При вызове метода аддбаккентри необходимо выполнить обработку события навигации или реализовать IProvideCustomContentState.If you call the AddBackEntry method, you must handle the Navigating event or implement IProvideCustomContentState.

При переходе к записи журнала навигации WPFWPF проверяет, связан ли с ним настраиваемый объект CustomContentState.When the navigation history entry is navigated to, WPFWPF checks to see if a custom CustomContentState object is associated with it. Если это так, он вызывает Replay, чтобы объект пользовательского CustomContentState применял состояние, которое оно было сохранено из предыдущей навигации.If so, it calls Replay to allow the custom CustomContentState object to apply the state it remembered from the previous navigation.

Пользовательский класс CustomContentState может переопределить JournalEntryName, чтобы изменить имя, которое отображается для записи журнала навигации, с которой связан объект CustomContentState.A custom CustomContentState class can override JournalEntryName to change the name that appears for the navigation history entry to which the CustomContentState object is associated. Значение, возвращаемое JournalEntryName, видно из ИПUI навигации различных навигаторов (Internet Explorer 7Internet Explorer 7, NavigationWindow, Frame).The value that JournalEntryName returns is visible from the navigation ИПUI of the various navigators (Internet Explorer 7Internet Explorer 7, NavigationWindow, Frame).

Класс, производный от CustomContentState, должен быть сериализуемым, что означает, что он должен по крайней мере дополняться SerializableAttributeи при необходимости реализовать ISerializable.A class that derives from CustomContentState must be serializable, which means it must at least be augmented with SerializableAttribute, and optionally implement ISerializable.

Важно!

При хранении сведений в пользовательском состоянии содержимого нельзя хранить ссылки на экземпляр страницы, для которой запоминаются состояния, если содержимое не должно храниться в памяти.When you store information in custom content state, you cannot store any references to the instance of the page for which you are remembering state if don't want the content to be retained in memory. Это предотвращает освобождение экземпляра страницы WPFWPF и не приводит к отведению журнала навигации по умолчанию.This prevents WPFWPF from releasing the page instance, and defeats the purpose of the default navigation history behavior. Если это необходимо сделать, попробуйте использовать вместо этого KeepAlive.If you must do this, consider using KeepAlive instead.

Конструкторы

CustomContentState()

Инициализирует новый экземпляр класса CustomContentState.Initializes a new instance of the CustomContentState class.

Свойства

JournalEntryName

Имя для сохраняемого в журнале переходов содержимого.The name for the content that is stored in navigation history. Значение JournalEntryName отображается в NavigationWindow, Frame и в навигационном Windows Internet Explorer 7Windows Internet Explorer 7ИПUI.The value of JournalEntryName is displayed from NavigationWindow, Frame, and Windows Internet Explorer 7Windows Internet Explorer 7 navigation ИПUI.

Методы

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Унаследовано от Object)
GetHashCode()

Служит в качестве хэш-функции по умолчанию.Serves as the default hash function.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
Replay(NavigationService, NavigationMode)

Вызывается для повторного применения состояния к фрагменту содержимого при выполнении перехода.Called to reapply state to a piece of content when navigation occurs.

ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Унаследовано от Object)

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

Дополнительно