Добрый день, извините сразу, перелазил 720 страниц различной инфы не нашел, суть вопроса как работать с XML файлами, редактирование, добавление , сохранение, удаление в WPF c учетом патерна MVVM, или что для начала нужно почитать чтоб разобраться в этой теме. Понял что мне нужен datagrid, считать в него могу(это легко) , а вот как дальше
`string sampleXmlFile = @"C:\Users\umut.koseali\Desktop\students.xml";
DataSet dataSet = new DataSet();
dataSet.ReadXml(sampleXmlFile);
DataView dataView = new DataView(dataSet.Tables[0]);
dataGrid1.ItemsSource = dataView`
Помогите плиз.
Это мой xml
`<?xml version="1.0" encoding="utf-8"?>
<Students>
<Student Id="0">
<FirstName>Robert</FirstName>
<Last>Jarman</Last>
<Age>21</Age>
<Gender>0</Gender>
</Student>
<Student Id="1">
<FirstName>Leona</FirstName>
<Last>Menders</Last>
<Age>20</Age>
<Gender>1</Gender>
</Student>
<Student Id="2">
<FirstName>Helen</FirstName>
<Last>Wilson</Last>
<Age>21</Age>
<Gender>1</Gender>
</Student>
<Student Id="3">
<FirstName>John</FirstName>
<Last>Smith</Last>
<Age>22</Age>
<Gender>0</Gender>
</Student>
<Student Id="4">
<FirstName>Алексей</FirstName>
<Last>Дроздов</Last>
<Age>19</Age>
<Gender>0</Gender>
</Student>
<Student Id="5">
<FirstName>Вадим</FirstName>
<Last>Халтурин</Last>
<Age>21</Age>
<Gender>0</Gender>
</Student>
<Student Id="6">
<FirstName>Анна</FirstName>
<Last>Говорухина</Last>
<Age>20</Age>
<Gender>1</Gender>
</Student>
<Student Id="7">
<FirstName>Александр</FirstName>
<Last>Иванов</Last>
<Age>20</Age>
<Gender>0</Gender>
</Student>
</Students>`
Как правильно вывести их в редактируемый список, с возможностью сохранения, добавления, редактирования информации?
Предлагаю отойти от DataTable
, а использовать строго типизированные коллекции. Тогда порядок действий будет примерно следующим:
1. Определить базовый класс Student
public class Student
{
public int ID { get; set; }
public string FirstName { get; set; }
public string Last { get; set; }
public int Age { get; set; }
public bool Gender { get; set; }
}
2. Определить класс для чтения
public static class XmlReader
{
public static IEnumerable<Student> readStudents(string path)
{
var xd = XDocument.Load(path);
foreach (var xe in xd.Root.Elements("Student"))
{
var id = (int)xe.Attribute("Id");
var firstName = (string)xe.Element("FirstName");
var lastName = (string)xe.Element("Last");
var age = (int)xe.Element("Age");
var gender = (string)xe.Element("Gender") != "0";
yield return new Student
{
ID = id,
Age = age,
FirstName = firstName,
Last = lastName,
Gender = gender
};
}
}
}
3. Считать
var Data = XmlReader.readStudents(pathToFile).ToArray();
Если вы хотите использовать DataSet и DataGrid для редактирования данных в XML-источнике, то можете через DataSet и сохранить их
var sampleXmlFile = @"C:\Users\umut.koseali\Desktop\students.xml";
var stream = new FileStream(sampleXmlFile, FileMode.Open);
dataSet.WriteXml(stream, XmlWriteMode.IgnoreSchema);
stream.Close();
Понимаю, что очень узконаправленный вопрос, однако офдокументация скупа на ответы
как очищать DualListbox перед каждым открытием модального окна? у меня мои данные накапливаются сейчас