Сохранять WPF Control в файле * .settings - PullRequest
0 голосов
/ 18 июня 2009

Можно ли сохранить элемент управления WPF или любой другой нетривиальный объект в файле * .settings в приложении .NET? Я подумал, что это будет легко, поскольку файл * .settings позволяет мне указать произвольный тип для каждого отдельного параметра, к сожалению, он не работает для меня.

Я пытаюсь сохранить System.Windows.Controls.ListBox в файле * .settings моего приложения. Проблема в том, что мой экземпляр списка не сохраняется. Когда я снова запускаю приложение, оно просто null , когда я загружаю его.

Вот то, что я использую для загрузки / сохранения моего экземпляра ListBox

    private void PersistListBoxToSettings(System.Windows.Controls.ListBox projectsListBox)
    {
        Properties.Settings.Default.ListBoxData = projectsListBox;
        Properties.Settings.Default.Save();
    }

    private void LoadProjectListBox()
    {
        projectsListBox = Properties.Settings.Default.ListBoxData; // Always null after application restart.
    }

Я протестировал мой файл * .settings, чтобы убедиться, что он даже работал, сохранив / загрузив простую строку - которая функционировала как ожидалось.

Является ли то, что я пытаюсь сделать, просто действительно плохой идеей? Должен ли я перестать пытаться быть умным и использовать правильную сериализацию объектов на диск?

1 Ответ

1 голос
/ 18 июня 2009

Я считаю, что объекты, которые вы сохраняете в файл .settings, должны быть сериализуемыми, реализуя ISerializable. Я сомневаюсь, что в Controls это реализовано. Эта ссылка, кажется, подтверждает мои мысли:

Форум Bytes.com

Возможно, вам удастся создать оболочку для его сохранения, реализации ISerializable и использования [SettingsSerializeAs (SettingsSerializeAs.Binary)] в качестве ссылки, чтобы обойти это.

...