/// <summary> /// Create a DataGridColumn for the selected data source property /// </summary> private void AddButton_Click(object sender, RoutedEventArgs e) { DataGridColumnTypeModel columnTypeModel = columnTypeComboBox.SelectedItem as DataGridColumnTypeModel; if (columnTypeModel == null) { throw new Exception("unexpected state"); } if (dataSourceColumnsListBox.SelectedItems.Count > 0) { int oldSelectedIndex = dataSourceColumnsListBox.SelectedIndex; DataSourcePropertyModel[] itemsToAdd = new DataSourcePropertyModel[dataSourceColumnsListBox.SelectedItems.Count]; dataSourceColumnsListBox.SelectedItems.CopyTo(itemsToAdd, 0); foreach (DataSourcePropertyModel pm in itemsToAdd) { ModelItem dataGridColumn = columnTypeModel.CreateDataGridColumn(_context, pm.Property); _columns.Add(dataGridColumn); } DataGridHelper.SparseSetValue(_dataGrid.Properties[DataGrid.AutoGenerateColumnsProperty], false); _dataSourcePropertiesCVS.View.Refresh(); dataSourceColumnsListBox.SelectedIndex = Math.Min(oldSelectedIndex, dataSourceColumnsListBox.Items.Count - 1); } }
internal static DataGridColumnModelCollection Create(ModelItem dataGrid) { DataGridColumnModelCollection columns = new DataGridColumnModelCollection(dataGrid); columns.Initializing = true; try { foreach (ModelItem dataGridColumn in dataGrid.Properties["Columns"].Collection) { columns.Add(dataGridColumn); } } finally { columns.Initializing = false; } return(columns); }