Необходимо реализовать систему настроек пользовательского интерфейса - загрузку / сохранение некоторых свойств элементов пользовательского интерфейса (которые могут быть изменены пользователем во время выполнения) из / в постоянное хранилище.Например:
- Элемент управления сеткой DevExpress - ширина столбцов, видимость, область сводки и т. Д. (Этот элемент управления имеет набор пар методов, таких как RestoreLayoutFrom / SaveLayoutTo, но SaveLayoutToStream (Xml) не работает в grid.Unloadedобработчик - когда сетка отключена от PresentationSource)
- строк / столбцов сетки, ширину / высоту сетки которых пользователь может настроить с помощью GridSplitter
- всплывающих элементов управления размером
ItЛегко настроить свойства элементов управления из хранилища настроек после загрузки / инициализации элементов управления и т. д., но как поймать момент перед выгрузкой элементов управления (когда они все еще остаются в визуальном дереве), чтобы получить их настройки для сохранения?
Краткое описание
Я собираюсь создать синглтон - UISettingsManager, внутри которого есть словарь с парами [element Uid, данные настроек элемента].В визуальном контейнере (Window, UserControl) этот менеджер можно использовать следующим образом:
public partial class PageHeader : UserControl
{
public PageHeader()
{
InitializeComponent();
UISettingsManager.RestoreSettings(myGridControl);
UISettingsManager.RestoreSettings(myPopup);
}
}
myGridControl & myPopup имеет уникальные Uid (в области приложения), поэтому UISettingsManager может получить свои настройки из внутреннего словаря &применить его к элементам управления;Конечно, UISettingsManager знает, как работать с некоторыми различными типами элементов управления.
Но когда настал подходящий момент для сохранения настроек элементов управления, каким контейнером является Window или UserControl?