private void OnSourceListItemMoved(ListChangedEventArgs e)
        {
            //Console.WriteLine("OnSourceListItemMoved {0}->{1} ({2})", e.OldIndex, e.NewIndex, this.dt.DefaultView[e.NewIndex][0]);
            Model.MoveRows(e.OldIndex + 1, 1, e.NewIndex + 1);

            Dictionary <RowColumnIndex, bool> moveDirtyRows = new Dictionary <RowColumnIndex, bool>();
            //RemoveDirtyCellRows(e.OldIndex + 1, 1, moveDirtyRows);
            //InsertDirtyCellRows(e.NewIndex + 1, 1, moveDirtyRows);

            BlinkTable moveBlinks = new BlinkTable();

            BlinkQueueDeleteRecord(e.OldIndex, moveBlinks);
            BlinkQueueInsertRecord(e.NewIndex, moveBlinks);
            Blink(e);

            InvalidateVisual(true);

            OnSourceListItemChanged(e);
        }
 void BlinkQueueDeleteField(int index, BlinkTable moveBlinks)
 {
     _blinkTable.RemoveColumns(index, 1, moveBlinks);
 }
 void BlinkQueueInsertField(int index, BlinkTable moveBlinks)
 {
     _blinkTable.InsertColumns(index, 1, moveBlinks);
 }
 void BlinkQueueDeleteRecord(int index, BlinkTable moveBlinks)
 {
     _blinkTable.RemoveRows(index, 1, moveBlinks);
 }
 void BlinkQueueInsertRecord(int index, BlinkTable moveBlinks)
 {
     _blinkTable.InsertRows(index, 1, moveBlinks);
 }