【问题标题】:Regarding WPF, need advice on data sources and data binding关于 WPF,需要有关数据源和数据绑定的建议
【发布时间】:2015-06-21 18:33:43
【问题描述】:

我对 WPF 并不陌生,但我还是个菜鸟。比方说,我想构建一个应用程序,它将一个人的数据存储在一个唯一且单独的文件中,而不是存储在数据库中,有点像记事本。我的应用程序应该执行以下操作。

  1. 它应该能够将一个人的信息保存在一个唯一的文件中。
  2. 它应该能够打开用户指定的文件并自动填写属性/表单。

我如何实现这一目标? XML 绑定是实现此目的的唯一方法,还是有其他替代方法?我的意思是,如果我使用 XML 绑定,我可以编写代码使用户能够打开和保存不同的 XML 文件,但我还读到从架构的角度来看应该避免绑定到 XML。那么,我的问题是否有替代解决方案?

【问题讨论】:

  • 您可以尝试从 csv 文件写入和检索内容。我觉得会更合适。如果您不喜欢使用数据库。为每个用户设置不同的文件也不是一个好主意
  • @csharporder 首先,感谢您的建议。我将尝试使用 csv 文件。对于不同用户的不同文件,您确实为您正在编写的不同文章维护不同的word文件,对吗?我的应用程序更像记事本和 word。实际上,它是更大套房的一部分。数据库不是我的选择。

标签: c# .net xml wpf data-binding


【解决方案1】:

我认为,如果您尝试使用读取内容并将其写入 CSV(逗号分隔值)文件(如果不打算实现数据库)来完成这些工作,那么您可以实现您想要的。

此外,如果您打算为每个用户创建一个单独的文件,这根本不是一个好主意。

这里不可能解释所有事情。所以请看下面发布的链接,其中详细解释了如何实现对 csv 文件的读取和写入。

此示例已从此处发布以获取完整详细信息,请查看以下链接Reading and writing to a csv file

【讨论】:

    【解决方案2】:

    显然,您的要求是将人员详细信息保存到唯一文件中。如果您真的想使用这种方法,一种选择是使用 XMLSerialization。

    您可以为数据绑定创建普通人对象。

    当您想将数据保存到特定人员的文件中时,您可以序列化对象并使用适当的名称(人名左右)保存文件

    当您想从文件中取回 Person 数据时,可以将其直接反序列化为 person 对象。

    //  Serialize and write to file
    Person person = myPerson;
    var serializer = new XmlSerializer(person.GetType());
    using (var writer = XmlWriter.Create("person1.xml"))
    {
        serializer.Serialize(writer, person);
    }
    
    //  Deserialize back to an instance
    var serializer = new XmlSerializer(typeof(Person));
    using (var reader = XmlReader.Create("person1.xml"))
    {
        var person= (Person)serializer.Deserialize(reader);
    }
    

    【讨论】:

      【解决方案3】:

      用于保存用户数据,例如会话和设置。有很多方法可以做到这一点。

      1. 将数据保存到 txt 文件。见here.
      2. 将数据保存到数据库。见here.
      3. 我个人最喜欢的,保存到Settings 文件。见here.

      这些只是部分您可以在本地保存数据的方式。

      请注意,我提到了将数据保存到数据库,因为您不应该完全取消它,尤其是当您要保存 大量 数据时。

      为了更直接地回答您的问题,我建议您使用选项 3。对于相对较小的数据集,例如用户信息和用户设置,最好将它们保存到内置的Settings 文件中。这很容易。

      祝你好运!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-21
        相关资源
        最近更新 更多