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


Сохранение одного набора экземпляров состояний страниц

Обновлен: Ноябрь 2007

В этом примере описывается способ сохранения нескольких элементов экземпляров состояний страниц с помощью классов IProvideCustomContentState и CustomContentState.

В этом примере описывается конкретная функциональная возможность Windows Presentation Foundation, и поэтому рекомендации по разработке приложений не соблюдаются. Более полное рассмотрение Windows Presentation Foundation (WPF) и рекомендации по тактике разработки приложений Microsoft .NET Framework см. в следующих разделах:

Специальные возможности: Рекомендации по специальным возможностям

Локализация: Общие сведения о глобализации и локализации WPF

Производительность: Улучшение производительности приложений WPF

Безопасность: Безопасность Windows Presentation Foundation

Download sample

Построение примера

  • Установите пакет средств разработки программного обеспечения для Windows и откройте окно командной строки среды его построения. В меню "Пуск" выделите пункты "Все программы", "Пакет SDK для Microsoft Windows", а затем "Оболочки CMD".

  • Загрузите образец, как правило из документации пакета SDK, на жесткий диск.

  • Чтобы построить образец из окна командной строки среды построения, перейдите в исходный каталог образца. В командной строке введите MSBUILD.

  • Чтобы построить образец в Microsoft Visual Studio, загрузите решение образца или файл проекта и нажмите сочетание клавиш CTRL + SHIFT + B.

Выполнение примера

  • Для запуска скомпилированного образца в окне командной строки среды построения, выполните EXE-файл в папке Bin\Debug или Bin\Release, содержащихся в папке кода источника образца.

  • Для запуска скомпилированного образца с помощью отладки в Visual Studio, нажмите клавишу F5.

Примечания

По умолчанию WPF (Windows Presentation Foundation) не сохраняет экземпляры страницы в журнале переходов. Вместо этого каждый раз при переходе на страницу создается ее новый экземпляр. Следовательно, данные о состоянии для первого экземпляра страницы не запоминаются для использования при повторном просмотре. Для WPF имеется возможность сохранения экземпляров страницы и, неявно, состояний страницы в журнале переходов, хотя это может быть дорогостоящим с точки зрения потребления памяти.

Тем не менее, WPF предоставляет инфраструктуру, позволяющую хранить сведения о состоянии страницы и о ее посещении в журнале навигации, и повторно применять их к новому экземпляру страницы при переходе на страницу с помощью журнала перехода.

В этом примере показано, как страница может реализовать класс IProvideCustomContentState, чтобы разрешить сохранение одного набора состояний, которые могут содержать один или несколько элементов. После перехода со страницы WPF вызывает метод GetContentState, чтобы запросить состояние страницы, которое требуется запомнить. Метод GetContentState возвращает подкласс класса CustomContentState, который создается для хранения и последующего воспроизведения состояния страницы.

Этот метод особенно полезен, если необходимо хранить несколько элементов состояния страницы. Для сохранения отдельного элемента состояния экземпляра страницы необходимо рассмотреть возможность использования журналируемого свойства зависимостей (см. раздел Сохранение одиночного элемента состояния экземпляров страницы). О сохранении нескольких наборов состояний для одного экземпляра страницы см. в разделе Хранение нескольких множеств состояний для одного экземпляра страницы.

Aa972166.alert_caution(ru-ru,VS.90).gifВажное примечание.

При сохранении данных в пользовательском состоянии содержимого нельзя сохранять ссылки на экземпляр страницы, для которого запоминается состояние. Сохранение такой ссылки не позволяет WPF освободить экземпляр страницы, и не согласуется со стандартным поведением журнала переходов. Если это сделать необходимо, воспользуйтесь методом KeepAlive.

См. также

Задачи

Сохранение одного набора экземпляров состояний страниц

Хранение нескольких множеств состояний для одного экземпляра страницы