2011-07-05 52 views
0

我試圖將xml-data綁定到Silverlight數據網格。目前我一直在用Silverlight的DevExpress工具「玩」。我不知道使用這些工具與標準方式相比有多不同,因爲我對Silverlight相當陌生。Silverlight - 使用DataGrid讀寫XML文件

在他們的網站上,我找到了下面的例子來從一個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; 
    } 
} 
} 

這可能是一件容易的事,但我堅持,因爲我沒有線索,這裏需要做什麼。 希望有人能幫助我。

預先感謝您!

+0

這是什麼問題?如何將項目保存回xml? – MerickOWA

+0

查看粗體文本:-) – TonyC

回答

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

關於Linq到Xml的一點是它不是Silverlight專用的,這些技巧也很好地傳遞給服務器編程。

現在,添加和刪除數據網格項目的任務,很好取決於您希望如何構建您的解決方案,這些MVVM或簡單的代碼隱藏,ID建議花時間去了解MVVM,它的設計模式這在銀光的世界非常合適,它將長期保存你的頭髮。 Heres關於使用MVVM的這個問題域的文章。

編輯

grid.ItemsSource as ObservableCollection<Contact>(); 

會給你回來集合。

+0

感謝您的信息和鏈接材料!不幸的是,我無法弄清楚如何使用修改後的網格單元來更新Xml文件。 – TonyC

+0

您的收藏應自動應用已更改的每個聯繫人的更改,如果確實如此,請使用鏈接中描述的方法將收藏序列化迴文件。 –