2010-10-30 62 views
1

我已经创建了一个对象调用项目具有不同的属性(字符串和一些自定义对象),我已绑定文本字段这些属性来获取用户输入。我创建了一个将此对象输出到XML文件的方法。但是,当我将这个XML文件导回到内存中时,文本字段不会填充到从ObservableCollection继承的一些自定义对象的文本或列表视图中,而没有任何文本。 XML确实加载,因为如果我将文本输入到空字段中,它会更新属性,并且可以使用新值导出XML文件。是否有可能进行数据绑定到内存中的对象,也让数据绑定到XML

要加载我使用下面的代码

public void LoadXML() 
    { 
     OpenFileDialog fileDialog = new OpenFileDialog(); 
     fileDialog.Title = "Load XML File"; 
     fileDialog.Filter = "XML Files|*.xml"; 
     DialogResult result = fileDialog.ShowDialog(); 

     if (result.ToString().Equals("OK")) 
     { 
      string filePath = fileDialog.FileName.ToString(); 
      XmlSerializer serializer = new XmlSerializer(typeof(Project)); 
      TextReader textReader = new StreamReader(filePath); 
      newProject = (Project)serializer.Deserialize(textReader); 
      textReader.Close(); 
     } 

    } 

将受到欢迎任何建议,感谢XML。

+0

项目是否类实现INotifyPropertyChanged接口和它调用抛出每个属性的PropertyChanged事件改变了吗?你在使用WPF吗? – Falcon 2010-10-30 14:56:24

回答

0

我假设你使用WPF。

您需要实现INotfiyPropertyChanged接口,并抛出了事件类的每一个属性,它被绑定到一个控制。

WPF然后相应地更新你的图形用户界面,当你从反序列化XML的项目。如果没有,请检查控件的DataContext是否设置为您反序列化的Project实例。

+0

如果实施了INotifyPropertyChanged,那是未设置的控件的DataContext。没有意识到它必须在反序列化之后设置。谢谢您的帮助。 – Ciaran 2010-10-30 16:23:18