WPF如何创建,保存和加载多个设置文件

时间:2017-06-07 00:02:02

标签: wpf settings config

在我的WPF应用程序中,我有通过Properties.Settings.Default.Something访问的设置。 在这些用户设置中,我正在保存不同的文本框,单选按钮,复选框值。 我需要根据一个组合框选择设置这些设置,并保存它。例如,用户在组合框中选择“1”,在文本框中设置文本,选择2,再次在文本框中设置文本。重新打开应用程序后,我希望保存这些文本框值。组合框选项的内容是动态生成的。

我知道这些设置保存在位于Users / appdata / ...的配置文件中,但是我不知道如何以及如何在运行时手动保存和加载这样的多个文件。

1 个答案:

答案 0 :(得分:0)

将它们序列化为xml文件。以下是如何执行此操作的一般示例。 请查看DataContract here

C#

 private static T ReadXmlFile<T>(string path) where T : class
    {

        T result = null;
            if (File.Exists(path))
            {

                try
                {
                    using (XmlReader reader = XmlReader.Create(path))
                    {
                        DataContractSerializer serializer = new DataContractSerializer(typeof(T));
                        result = (T)serializer.ReadObject(reader);
                    }
                }
                catch (Exception ex)
                {
                    throw ex; // or what ever
                }
            }
            return result;
        }

    private static void WriteXmlFile<T>(string path, T content2write) where T : class
    {
        if (!Directory.Exists(Path.GetDirectoryName(path)))
        {
            Directory.CreateDirectory(Path.GetDirectoryName(path));
        }


        using (XmlWriter writer = XmlWriter.Create(path,
                                                   new XmlWriterSettings
                                                   {
                                                       Indent = true,
                                                       IndentChars = "  ",
                                                       Encoding = Encoding.UTF8,
                                                       CloseOutput = true
                                                   }))
        {
            DataContractSerializer serializer = new DataContractSerializer(typeof(T));
            serializer.WriteObject(writer, content2write);
        }
    }

也许将它们保存在您自己的AppData - 文件夹中Environment.SpecialFolder.LocalApplicationData ;-)并按照这样的方式

private static readonly string MyPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), @"MyApp\AppDescription");