Привязка произвольного XML к сетке данных - PullRequest
2 голосов
/ 22 октября 2010

Я полностью новичок в Silverlight и пытаюсь делать вещи "правильным образом".

Проблема в том, что у меня есть 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 Ответ

2 голосов
/ 22 октября 2010

Взгляните на использование XMLSerializer . Десериализация для автоматической десериализации вашего XML без необходимости иметь дело с XDocument.Ваш класс будет выглядеть следующим образом:

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

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

}

После десериализации данных посмотрите на MVVM , как правильно связать данные с вашими представлениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...