/// <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); } }
/// <summary> /// Only show those datasource fields that don't have bound columns /// </summary> private void _dataSourcePropertiesCVS_Filter(object sender, FilterEventArgs e) { if (_columns != null) { DataSourcePropertyModel prop = e.Item as DataSourcePropertyModel; e.Accepted = !(_columns.Includes(dataGridColumnModel => prop.Name.Equals(dataGridColumnModel.BindingPropertyName))); } }