private void EditColumn()
        {
            DataGridColumnModel columnModel = datagridColumnsListBox.SelectedItem as DataGridColumnModel;

            if (columnModel == null)
            {
                return;
            }

            using (ModelEditingScope scope = columnModel.Column.BeginEdit(columnModel.Column.Name + " Changed"))
            {
                EditDataGridColumnsUserInterface ui = new EditDataGridColumnsUserInterface(_context, columnModel, _dataSourceProperties);

                // Use Windows Forms to show the design time because Windows Forms knows about the VS message pump
                System.Windows.Forms.DialogResult result = DesignerDialog.ShowDesignerDialog("Edit Column", ui, 360, 470);
                if (result == System.Windows.Forms.DialogResult.OK)
                {
                    scope.Complete();
                    _dataSourcePropertiesCVS.View.Refresh();
                }
                else
                {
                    scope.Revert();
                }
            }
        }
        internal EditDataGridColumnsUserInterface(EditingContext context, DataGridColumnModel dataGridColumnModel, DataSourcePropertyModelCollection dataSourceProperties)
            : this()
        {
            _dataSourceProperties = dataSourceProperties;
            _dataGridColumnModel  = dataGridColumnModel;
            _context = context;

            this.DataContext = dataGridColumnModel;

            bindingComboBox.ItemsSource = _dataSourceProperties;
            clipboardContentBindingComboBox.ItemsSource = _dataSourceProperties;
        }
        /// <summary>
        ///     Remove the selected DataGridColumn
        /// </summary>
        private void RemoveButton_Click(object sender, RoutedEventArgs e)
        {
            if (datagridColumnsListBox.SelectedItems.Count > 0)
            {
                int oldSelectedIndex = datagridColumnsListBox.SelectedIndex;
                DataGridColumnModel[] itemsToRemove = new DataGridColumnModel[datagridColumnsListBox.SelectedItems.Count];
                datagridColumnsListBox.SelectedItems.CopyTo(itemsToRemove, 0);

                foreach (DataGridColumnModel dataGridColumnModel in itemsToRemove)
                {
                    _columns.Remove(dataGridColumnModel);
                }

                datagridColumnsListBox.SelectedIndex = Math.Min(oldSelectedIndex, datagridColumnsListBox.Items.Count - 1);
                _dataSourcePropertiesCVS.View.Refresh();
            }
        }