1

是否可以将 WPF 控件或任何其他重要对象持久保存到 .NET 应用程序中的 *.settings 文件?我认为这很容易,因为 *.settings 文件允许我为每个单独的设置指定任意类型,不幸的是,它似乎对我不起作用。

我要做的是将System.Windows.Controls.ListBox持久化到我的应用程序的 *.settings 文件中。问题是,我的列表框实例实际上并没有被保存。当我再次运行我的应用程序时,当我去加载它时它只是空的。

这是我用来加载/保存我的 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 文件,以确保它甚至可以通过保存/加载一个简单的字符串来工作——它按预期运行。

我正在尝试做的只是一个非常糟糕的主意吗?我应该停止尝试变得聪明并使用正确的对象序列化到磁盘吗?

4

1 回答 1

1

我的信念是,您保存到 .settings 文件的对象必须是可序列化的,实现 ISerializable。我怀疑控件是否已实现此功能。这个链接似乎支持了我的想法:

字节网论坛

您可能可以制作一个包装器来保存它,实现 ISerializable 并使用 [SettingsSerializeAs(SettingsSerializeAs.Binary)] 作为解决此问题的链接建议。

于 2009-06-18T15:12:30.717 回答