private static void OnColumnReordering(object sender, ColumnReorderingEventArgs e)
        {
            FixedCellPanel panel = sender as FixedCellPanel;

            if (panel == null)
            {
                return;
            }

            DataGridContext dataGridContext = DataGridControl.GetDataGridContext(panel);

            if (dataGridContext == null)
            {
                return;
            }

            TableViewColumnVirtualizationManager columnVirtualizationManager =
                dataGridContext.ColumnVirtualizationManager as TableViewColumnVirtualizationManager;

            if (columnVirtualizationManager == null)
            {
                return;
            }

            int currentFixedColumnCount = columnVirtualizationManager.FixedColumnCount;

            // We must be sure the VisiblePosition is converted to visible index since some Columns can be Visible = false
            int oldVisiblePosition = FixedCellPanel.CalculateVisibleIndex(e.OldVisiblePosition, dataGridContext);
            int newVisiblePosition = FixedCellPanel.CalculateVisibleIndex(e.NewVisiblePosition, dataGridContext);

            if ((oldVisiblePosition < columnVirtualizationManager.FixedColumnCount) && (newVisiblePosition >= columnVirtualizationManager.FixedColumnCount))
            {
                // A column was moved from the fixedPanel to the scrollingPanel

                // Do not increment version, it will be done by the FixedColumnCount changed
                TableView.SetFixedColumnCount(columnVirtualizationManager.DataGridContext, columnVirtualizationManager.FixedColumnCount - 1);
            }
            else if ((oldVisiblePosition >= columnVirtualizationManager.FixedColumnCount) && (newVisiblePosition < columnVirtualizationManager.FixedColumnCount))
            {
                // A column was moved from the scrollingPanel to the fixedPanel

                // Do not increment version, it will be done by the FixedColumnCount changed
                TableView.SetFixedColumnCount(columnVirtualizationManager.DataGridContext, columnVirtualizationManager.FixedColumnCount + 1);
            }
            else
            {
                columnVirtualizationManager.IncrementVersion(new UpdateMeasureRequiredEventArgs(UpdateMeasureTriggeredAction.ColumnReordering));
            }

            // This must be done to stop progation of the event even
            // if only 1 ColumnManagerCell will raise it.
            e.Handled = true;
        }
    private static void OnColumnReordering( object sender, ColumnReorderingEventArgs e )
    {
      FixedCellPanel panel = sender as FixedCellPanel;

      if( panel == null )
        return;

      DataGridContext dataGridContext = DataGridControl.GetDataGridContext( panel );

      if( dataGridContext == null )
        return;

      TableViewColumnVirtualizationManager columnVirtualizationManager =
          dataGridContext.ColumnVirtualizationManager as TableViewColumnVirtualizationManager;

      if( columnVirtualizationManager == null )
        return;

      int currentFixedColumnCount = columnVirtualizationManager.FixedColumnCount;

      // We must be sure the VisiblePosition is converted to visible index since some Columns can be Visible = false
      int oldVisiblePosition = FixedCellPanel.CalculateVisibleIndex( e.OldVisiblePosition, dataGridContext );
      int newVisiblePosition = FixedCellPanel.CalculateVisibleIndex( e.NewVisiblePosition, dataGridContext );

      if( ( oldVisiblePosition < columnVirtualizationManager.FixedColumnCount ) && ( newVisiblePosition >= columnVirtualizationManager.FixedColumnCount ) )
      {
        // A column was moved from the fixedPanel to the scrollingPanel

        // Do not increment version, it will be done by the FixedColumnCount changed
        TableView.SetFixedColumnCount( columnVirtualizationManager.DataGridContext, columnVirtualizationManager.FixedColumnCount - 1 );
      }
      else if( ( oldVisiblePosition >= columnVirtualizationManager.FixedColumnCount ) && ( newVisiblePosition < columnVirtualizationManager.FixedColumnCount ) )
      {
        // A column was moved from the scrollingPanel to the fixedPanel

        // Do not increment version, it will be done by the FixedColumnCount changed
        TableView.SetFixedColumnCount( columnVirtualizationManager.DataGridContext, columnVirtualizationManager.FixedColumnCount + 1 );
      }
      else
      {
        columnVirtualizationManager.IncrementVersion( new UpdateMeasureRequiredEventArgs( UpdateMeasureTriggeredAction.ColumnReordering ) );
      }

      // This must be done to stop progation of the event even
      // if only 1 ColumnManagerCell will raise it.
      e.Handled = true;
    }