Silverlight - чтение и запись в XML-файл с помощью DataGrid - PullRequest
0 голосов
/ 05 июля 2011

Я пытаюсь привязать xml-данные к сетке данных Silverlight. На данный момент я «играю» с инструментами DevExpress для Silverlight. Я не знаю, насколько отличается использование этих инструментов по сравнению со стандартным способом, поскольку я довольно новичок в Silverlight.

На их сайте я нашел следующий пример для извлечения данных из одного XML-файла.

Теперь я хочу иметь возможность сохранить изменения, внесенные в сетку данных, в этот 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 голосов
/ 05 июля 2011

Вы не упоминаете, как получаете XML-файл, поэтому есть несколько вариантов: один сохранить его в локальном хранилище и загрузить из локального хранилища, здесь статья на эту тему, два получить ее из сервер и сохранить его на сервер, heres статья на эту тему или три какой-либо из них. Что касается работы с XML, похоже, что вы используете linq to xml для чтения данных в коллекцию контактов, я рекомендую прочитать и перейти по этим ссылкам

  1. Образцы Linq to Xml
  2. Использование LINQ to XML для добавления данных в файл XML в C #
  3. Создание и сохранение дерева XML с использованием LINQ to XML

Особенность Linq to Xml в том, что она не специфична для silverlight, эти навыки также хорошо переносятся на программирование на сервере.

Теперь задача добавления и удаления элементов из таблицы данных, в зависимости от того, как вы решите спроектировать свое решение, то есть MVVM или простой программный код, может порекомендовать потратить время на знакомство с MVVM, это шаблон проектирования, который очень хорошо вписывается в мир серебряного света, он сохранит ваши волосы в долгосрочной перспективе. Вот статья об этой проблемной области с использованием MVVM.

EDIT

  grid.ItemsSource as  ObservableCollection<Contact>();

вернет вам коллекцию.

...