我试图将xml-数据绑定到Silverlight数据网格。目前,我一直在“玩”用于Silverlight的DevExpress工具。我不知道它使用这些工具与标准方法有多大的不同,因为我对Silverlight相当陌生。
在他们的网站上,我找到了以下从一个XML文件中检索数据的示例。
现在我希望能够保存我在这个XML文件中所做的修改,也可以添加和删除也会影响XML-file.的行。
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;
}
}
}这可能是一个简单的任务,但我被困住了,因为我不知道在这里需要做什么。希望有人能帮我。
提前谢谢你!
发布于 2011-07-05 18:52:27
您没有提到如何获取xml文件,因此没有几个选项,一个是将其保存到本地存储并从本地存储加载它,另一个是从主题上在这里一篇文章,两个从服务器检索它并将其保存到服务器上,或者将一个主题的文章保存到在这里或三个任意一个的组合。就使用XML而言,您似乎正在使用linq到xml将数据读取到联系人集合中,我建议您阅读并浏览这些链接。
Linq到Xml的特点是,它并不是silverlight特有的,这些技能也可以很好地传递给服务器编程。
现在,从datagrid中添加和删除项的任务,取决于您如何去架构您的解决方案,有MVVM或简单的代码背后,我建议您花时间了解MVVM,它是一种非常适合silverlight世界的设计模式,从长远来看,它将为您节省时间。使用MVVM编写一篇关于这个问题域的文章。
编辑
grid.ItemsSource as ObservableCollection<Contact>();会把收藏还给你的。
https://stackoverflow.com/questions/6585136
复制相似问题