/// <summary> /// Helper method which generates columns for a given IItemProperties and adds /// them either to a datagrid or to a collection of columns as specified by the flag. /// </summary> /// <param name="dataGrid"></param> /// <param name="iItemProperties"></param> /// <param name="columnCollection"></param> private static void GenerateColumns( IItemProperties iItemProperties, DataGrid dataGrid, Collection<DataGridColumn> columnCollection) { Debug.Assert(iItemProperties != null, "iItemProperties should not be null"); Debug.Assert(dataGrid != null || columnCollection != null, "Both dataGrid and columnCollection cannot not be null at the same time"); ReadOnlyCollection<ItemPropertyInfo> itemProperties = iItemProperties.ItemProperties; if (itemProperties != null && itemProperties.Count > 0) { foreach (ItemPropertyInfo itemProperty in itemProperties) { DataGridColumn dataGridColumn = DataGridColumn.CreateDefaultColumn(itemProperty); if (dataGrid != null) { // AutoGeneratingColumn event is raised before generating and adding column to datagrid // and the column returned by the event handler is used instead of the original column. DataGridAutoGeneratingColumnEventArgs eventArgs = new DataGridAutoGeneratingColumnEventArgs(dataGridColumn, itemProperty); dataGrid.OnAutoGeneratingColumn(eventArgs); if (!eventArgs.Cancel && eventArgs.Column != null) { eventArgs.Column.IsAutoGenerated = true; dataGrid.Columns.Add(eventArgs.Column); } } else { columnCollection.Add(dataGridColumn); } } } }