2010-10-30 3 views
1

Я создал объект под названием Project, который имеет разные свойства (строки и некоторые пользовательские объекты), у меня есть привязанные текстовые поля к этим свойствам, чтобы получить пользователя вход. Я создал метод, который выводит этот объект в файл XML. Однако, когда я импортирую этот XML-файл обратно в память, текстовые поля не заполняются текстовыми или списковыми представлениями некоторых пользовательских объектов, которые наследуются от ObservableCollection, не имеют никакого текста. XML действительно правильно загружается, поскольку, если я ввожу текст в пустые поля, он обновляет свойство, и я могу экспортировать 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(); 
     } 

    } 

Любые предложения будут приветствоваться, спасибо.

+0

Является ли класс Project реализованным интерфейсом INotifyPropertyChanged и вызывает ли он вызов события PropertyChanged для каждого свойства? Вы используете WPF? – Falcon

ответ

0

Предполагаете, вы используете WPF.

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

WPF затем обновляет ваш графический интерфейс соответственно при десериализации проекта из XML. Если это не так, проверьте, установлен ли в DataContext вашего элемента экземпляр Project, который вы десериализовали.

+0

Если реализована реализация INotifyPropertyChanged, это был элемент управления DataContext, который не был установлен. Не понял, что нужно было установить после десериализации. Спасибо за помощь. – Ciaran

Смежные вопросы