/// <summary> /// Sets the content altogether /// </summary> /// <param name="source">The data to set</param> public void SetContent(ObservableCollection <T_Item> source) { Elements.Clear(); // Wrap all elements in Source, build the list of available columns Source = source; foreach (var item in source) { Elements.Add(new FieldExposer <T_Item>(DataAccessor, item)); foreach (var field in DataAccessor.AllFieldsOf(item)) { var matchingColumn = Columns.FirstOrDefault(col => col.Column == field); if (matchingColumn != null) { matchingColumn.Type = DataAccessor.GetType(item, field); continue; } Columns.Add(new FieldMapperGridColumn() { Parent = this, Header = field, Column = field, Width = 100, Visible = false, Type = DataAccessor.GetType(item, field) }); } } OriginalElements = source; RaisePropertyChanged("Columns"); }