将任意XML绑定到数据网格

时间:2010-10-22 16:10:28

标签: silverlight silverlight-4.0

我对Silverlight很陌生,并试图以“正确的方式”做事。

问题是:我需要从Web服务器获取XML,我需要在数据网格中显示该数据。

我已经四处寻找并且我设法得到了以下内容:

说我的XML看起来像:

<customers>
    <customer>
        <name>A Person</name>
        <address>my address</address>
    </customer>
    <customer>
        <name>A Guy</name>
        <address>my address 2</address>
    </customer>
</customers>

我可以检索这个并填充POCO,例如:

public class Customer
{
    public string Name { get; set; }

    public string Address { get; set; }
}
...
XDocument oDoc = //read from a string asnychronously
var myData = from info in oDoc.Descendants("customer")
    select new Customer
    {
        Name = Convert.ToString(info.Element("name").Value),
        Address = Convert.ToString(info.Element("address").Value
    };
_grid.ItemsSource = myData;

但是,如果我采用这种方法,我将不会真正使用Silverlight的动态绑定功能。

我怎样才能以“Silverlight”的方式做到这一点,这样当我(或其他真正了解silverlight的人)看了几年后的代码时,不要讨厌我讨厌的事情。

1 个答案:

答案 0 :(得分:2)

使用XMLSerializerDeserialize方法自动反序列化XML,而无需处理XDocument。你的课将如下所示:

[XmlRoot]
public class Customer
{
    [XmlElement]
    public string Name { get; set; }

    [XmlElement]
    public string Address { get; set; }

}

将数据反序列化后,请查看MVVM如何正确地将数据绑定到您的视图。