如何将XML绑定到WPF并具有CRUD功能?

时间:2013-09-06 19:48:09

标签: c# xml wpf linq xaml

我有一个包含大约450个项目的XML文档。

<Customers>
    <Customer>
        <Name>XYZ</Name
        <Phone>1234567890</Phone>
    </Customer>
    <Customer>
        <Name>ABC</Name>
        <Phone>9012345678</Phone>
    </Customer>
</Customers>

我需要将此文档绑定到WPF中的表单。那部分我已经想通了。我将名称绑定到ComboBox,并将电话(和其他字段)绑定到文本块,以便显示组合框中选择的任何客户的信息。这是在XAML中完成的。

但我需要添加的是能够从现有列表中添加/更新/删除客户,并在XML文件中添加/更新/删除客户。我在想的是我不能仅仅在XAML中执行此操作,并且需要以某种方式将XML读入具有Customer类的List,其中所有属性都与XML文档中的字段匹配。那是对的吗?如果是这样,最简单的方法是什么?现在我正在阅读LINQ to XML,试图弄清楚如何做到这一点,但在我去那里之前,我想知道这是否是最简单的方法。

我目前正在开展的项目是工作,开发只是我偶尔会做的事情,但知道如何做到这一点对于Windows Phone应用程序的想法来更新我的应用程序是很方便的。< / p>

提前致谢!

1 个答案:

答案 0 :(得分:0)

启动Visual Studio命令行并使用xsd.exe工具创建实现INotifyPropertyChanged的强类型DataSet。

以下是一个示例命令:

xsd.exe /d /l:cs ..\MYXml.xsd /edb /o:..\Data\ /n:MyApp.Data
  • / d :创建数据集。
  • / l:cs :C#语言。
  • .. \ MyXml.xsd :xsd的路径。
  • / edb :创建数据绑定xsd,这将使数据集实现INotifyPropertyChanged
  • / o :输出目录。
  • / n :类的命名空间。

您可以轻松地从xml文件加载和保存生成的DataSet。

public MyDataSet Load(string path)
{
    MYXml ds = new MYXml();
    ds.ReadXml(path);
    return ds;
}

public void SaveChanges(MYXml ds, string path )
{
    // ds.AcceptChanges();
    ds.WriteXml(path);
}

MSDN: XML Schema Definition Tool (Xsd.exe)