Я бы предложил использовать привязку данных и шаблонизацию данных (прочитайте их, если вы еще этого не сделали) как можно больше, чтобы это работало хорошо автоматически сгенерированные классы должны быть скорректированы для его поддержки.
Первым шагом является реализация INotifyPropertyChanged
во всех свойствах, которые не являются коллекциями, чтобы при изменении свойства пользовательский интерфейс обновлялся автоматически. В лучшем случае используйте массивы только для десериализации, после этого скопируйте элементы в свойство типа ObservableCollection<T>
или любую другую коллекцию, которая реализует INotifyCollectionChanged
, чтобы сетки обновлялись когда новый элемент добавляется в коллекцию и никогда больше не трогает массивы.
Вы также можете сделать свойство Array «виртуальным» (не имеет поля поддержки, просто манипулирует при получении и установке), например ::
//The property & field used for binding and editing
private readonly ObservableCollection<GPASemestre> _ObservableSemestre = new ObservableCollection<GPASemestre>();
public ObservableCollection<GPASemestre> ObservableSemestre { get { return _ObservableSemestre; } }
//The property used for serialisation/deserialisation
public GPASemestre[] Semestre
{
get
{
return ObservableSemestre.ToArray();
}
set
{
ObservableSemestre.Clear();
foreach (var item in value)
{
ObservableSemestre.Add(item);
}
}
}