Почему бы просто не использовать класс XmlSerializer ?
Вы можете просто создать объект Patient. Затем сериализуйте и десериализуйте из него как:
[Serializable]
public class Patient
{
public string Name {get; set;}
public int Age {get; set;}
public int Id {get; set;}
public override string ToString()
{
return Name;
}
}
...
public void Serialize(List<Patient> pList)
{
using (Stream writer = new FileStream(filename, FileMode.Create))
{
var serializer = new XmlSerializer(typeof (List<Patient>));
serializer.Serialize(writer, pList);
}
}
public List<Patient> Deserialize()
{
using (Stream reader = new FileStream(filename, FileMode.Open))
{
var serializer = new XmlSerializer(typeof (List<Patient>));
var pList = (List<Patient>) serializer.Deserialize(reader);
return pList;
}
}
Теперь вы можете создать обычный объект пациента, сохранить его с помощью сериализации и загрузить обратно в объект с помощью десериализации.
Возможно, вы захотите использовать его так:
public List<Patient> Patients; // Patient collection
//Populate your listBox with these patient objects.
private void textBox1_LostFocus(object sender, RoutedEventArgs e)
{
if (listBox1.SelectedItem == null) return;
var patient = listBox1.SelectedItem as Patient; // Get the selected PObj;
patient.Name = textBox1.Text;
Serialize(Patients); //Save the list to xml
}