Можно ли привязать данные к объекту в памяти, а также разрешить привязку данных к XML - PullRequest
2 голосов
/ 30 октября 2010

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

    }

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

1 Ответ

0 голосов
/ 30 октября 2010

Я полагаю, вы используете WPF.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...