/// <summary> /// Add Columns based on the datasource /// </summary> private void AddColumns(ModelItem selectedDataGrid, EditingContext context) { using (ModelEditingScope scope = selectedDataGrid.BeginEdit("Generate Columns")) { // Set databinding related properties DataGridHelper.SparseSetValue(selectedDataGrid.Properties[DataGrid.AutoGenerateColumnsProperty], false); // Get the datasource object dataSource = selectedDataGrid.Properties[ItemsControl.ItemsSourceProperty].ComputedValue; if (dataSource != null) { // Does WPF expose something like ListBindingHelper? PropertyDescriptorCollection dataSourceProperties = System.Windows.Forms.ListBindingHelper.GetListItemProperties(dataSource); foreach (PropertyDescriptor pd in dataSourceProperties) { ModelItem dataGridColumn = null; dataGridColumn = DataGridHelper.CreateDefaultDataGridColumn(context, pd); if (dataGridColumn != null) { selectedDataGrid.Properties["Columns"].Collection.Add(dataGridColumn); } } } scope.Complete(); } }
public override ModelItem CreateDataGridColumn(EditingContext context, PropertyDescriptor pd) { return(DataGridHelper.CreateDefaultDataGridColumn(context, pd)); }