Я хотел поделиться библиотекой, которую я создал для этого. Это крошечная библиотека, но большое улучшение (IMHO) по сравнению с файлами .settings.
Библиотека называется Jot (GitHub) , вот старая Статья Code Project Я писал об этом.
Вот как вы можете использовать его для отслеживания размера и местоположения окна:
public MainWindow()
{
InitializeComponent();
_stateTracker.Configure(this)
.IdentifyAs("MyMainWindow")
.AddProperties(nameof(Height), nameof(Width), nameof(Left), nameof(Top), nameof(WindowState))
.RegisterPersistTrigger(nameof(Closed))
.Apply();
}
Преимущество по сравнению с файлами .settings: В нем значительно меньше кода, и он намного менее подвержен ошибкам, поскольку вам нужно только упомянуть каждое свойство один раз .
В файлах настроек вам нужно упоминать каждое свойство пять раз: один раз, когда вы явно создаете свойство, и еще четыре раза в коде, который копирует значения туда и обратно.
Хранение, сериализация и т. Д. Полностью настраиваются. Когда целевые объекты создаются контейнером IOC, вы можете [подключить его] [], чтобы он автоматически применял отслеживание ко всем объектам, которые он разрешает, и все, что вам нужно сделать, чтобы сделать свойство постоянным, - добавить атрибут [Trackable] на нем.
Он легко настраивается, вы можете настроить:
- когда данные сохраняются и применяются глобально или для каждого отслеживаемого объекта
- как это сериализовано
- где он хранится (например, файл, база данных, онлайн, изолированное хранилище, реестр)
- правила, которые могут отменить применение / сохранение данных для свойства
Поверьте мне, библиотека на высшем уровне!