2010-10-30 59 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