Silverlight - 使用DataGrid读取和写入XML文件

时间:2011-07-05 15:26:31

标签: c# xml silverlight linq-to-xml

我正在尝试将xml-data绑定到Silverlight数据网格。目前,我一直在玩“Silverlight的DevExpress工具”。我不知道使用这些工具与标准方式有多么不同,因为我对Silverlight相当新。

在他们的网站上,我发现以下示例从一个XML文件中检索数据。

现在我希望能够将我在datagrid中所做的修改保存到此xml文件中,还可以添加和删除也会影响XML文件的行。

namespace XMLReadWrite {
public partial class MainPage : UserControl {

    public MainPage() {
        InitializeComponent();

        grid.ItemsSource = GetData();
    }
    XDocument doc = XDocument.Load("Contacts.xml", LoadOptions.None);

    ObservableCollection<Contact> GetData() {



        var items = from item in doc.Descendants("Contacts")
                    select new Contact() {
                        FirstName = item.Element("FirstName").Value,
                        LastName = item.Element("LastName").Value,
                        Company = item.Element("Company").Value,
                        City = item.Element("City").Value
                        //ID = int.Parse(item.Element("ID").Value)
                    };

        ObservableCollection<Contact> contacts = new ObservableCollection<Contact>();
        foreach (Contact contact in items) {
            contacts.Add(contact);
        }
        return contacts;
    }

    private void SaveToXML()
    { }


    private void Save_Button_Click(object sender, RoutedEventArgs e)
    {
        SaveToXML();
    }        
}

public class Contact {
    public int ID {
        get;
        set;
    }
    public string FirstName {
        get;
        set;
    }
    public string LastName {
        get;
        set;
    }
    public string Company {
        get;
        set;
    }

    public string City
    {
        get;
        set;
    }
 }
}

这可能是一项简单的任务,但我陷入困境,因为我不知道在这里需要做些什么。 希望有人可以帮助我。

提前谢谢!

1 个答案:

答案 0 :(得分:0)

您没有提到如何获取xml文件,因此几乎没有选项,一个将其保存到本地存储并从本地存储加载,heres有关该主题的文章,两个从服务器检索它并将其保存到服务器,heres关于该主题的文章或三者中的任何一个组合。就使用XML而言,看起来您正在使用linq to xml将数据读入联系人集合,我建议您阅读并浏览这些链接

  1. Linq to Xml Samples
  2. Using LINQ to XML to Add Data to XML File in C#
  3. Creating and Saving XML tree using LINQ to XML
  4. 关于Linq到Xml的事情是它不是特定于silverlight,这些技能也很好地转移到服务器编程。

    现在从数据网格中添加和删除项目的任务,取决于您希望如何构建解决方案,MVVM或简单的代码隐藏,id建议花时间去了解MVVM,它的设计模式是非常适合银光的世界,从长远来看,它会为你节省头发。 Heres使用MVVM撰写关于此问题域的文章。

    修改

      grid.ItemsSource as  ObservableCollection<Contact>();
    

    会回复你的收藏品。