/// <summary>
        /// Perfoms MouseUp operation on GridHeaderCellControl
        /// </summary>
        /// <param name="e">An <see cref="T:System.Windows.Input.MouseButtonEventArgs">MouseButtonEventArgs</see> that contains the event data.</param>
        /// <param name="headerCell"></param>
        /// <remarks></remarks>
        internal void DoActionOnMouseUp(MouseEventArgs e, GridHeaderCellControl headerCell)
        {
#if !WPF
            PointerPoint pp            = e.GetCurrentPoint(this.dataGrid.VisualContainer);
            double       hScrollChange = 0;

            for (int i = 0; i < this.dataGrid.VisualContainer.FrozenColumns; i++)
            {
                hScrollChange += this.dataGrid.VisualContainer.ColumnWidths[i];
            }
            var    pointerPoint = new Point(pp.Position.X - (dataGrid.VisualContainer.HScrollBar.Value - hScrollChange), pp.Position.Y - dataGrid.VisualContainer.VScrollBar.Value);
            double delta        = pointerPoint.X - dragLine.Corner;
#else
            Point  pp    = e.GetPosition(this.dataGrid.VisualContainer);
            double delta = pp.X - dragLine.Corner;
#endif
            var    columnIndex = this.dataGrid.ResolveToGridVisibleColumnIndex(dragLine.LineIndex);
            double width       = Math.Max(0, dragLine.Size + delta);
            if (!(columnIndex >= 0 && columnIndex < this.dataGrid.Columns.Count))
            {
                return;
            }
            width = ComputeResizingWidth(this.dataGrid.Columns[columnIndex], width);
            this.dataGrid.VisualContainer.ScrollColumns.ResetLineResize();
            var args = new ResizingColumnsEventArgs(this.dataGrid)
            {
                ColumnIndex = dragLine.LineIndex, Width = width
            };
            if (columnIndex >= 0 && !dataGrid.RaiseResizingColumnsEvent(args))
            {
                this.dataGrid.Columns[columnIndex].IsHidden = (args.Width == 0 || args.Width == 1);
                if ((args.Width == 0) || (args.Width == 1))
                {
                    this.dataGrid.Columns[columnIndex].Width = Math.Round(args.Width);
                    //Reset the extendedwidth when column is in Hidden because of Resizing.
                    this.dataGrid.Columns[columnIndex].ExtendedWidth = double.NaN;
                }
                else
                {
                    if (args.Width != this.dataGrid.Columns[columnIndex].ActualWidth && this.dataGrid.Columns[columnIndex].ExtendedWidth > 0)
                    {
                        var actualWidth               = this.dataGrid.Columns[columnIndex].ActualWidth;
                        var extendedWidth             = this.dataGrid.Columns[columnIndex].ExtendedWidth;
                        var differenceInExtendedWidth = ((args.Width - actualWidth) < extendedWidth) ? (args.Width - actualWidth) : 0;
                        this.dataGrid.Columns[columnIndex].ExtendedWidth = (differenceInExtendedWidth > 0) ? (extendedWidth - differenceInExtendedWidth) : double.NaN;
                    }
                    if ((this.dataGrid.ResolveToGridVisibleColumnIndex(this.dataGrid.VisualContainer.ScrollColumns.GetVisibleLines().Count) == 1) && this.dataGrid.Columns[columnIndex].Width == args.Width)
                    {
                        args.Width += 1;
                    }
                    this.dataGrid.Columns[columnIndex].Width = Math.Round(args.Width) == 0 ? 20 : Math.Round(args.Width);
                }
            }
            if ((args.Width == 0 || columnIndex >= 0 && dataGrid.Columns[columnIndex].IsHidden) && dataGrid.AllowResizingHiddenColumns && dataGrid.VisualContainer.ColumnCount == this.dataGrid.ResolveToGridVisibleColumnIndex(dragLine.LineIndex + 1))
            {
                var headerRow       = dataGrid.RowGenerator.Items.FirstOrDefault(row => row.RowIndex == dataGrid.GetHeaderIndex());
                var columnBase      = headerRow.VisibleColumns.FirstOrDefault(column => column.ColumnIndex == dragLine.LineIndex + 1);
                var prevHiddenIndex = columnIndex - 1;
                while (prevHiddenIndex > 0 && dataGrid.Columns[prevHiddenIndex].IsHidden)
                {
                    prevHiddenIndex--;
                }
                if (columnBase != null)
                {
                    var prevColumnHeader = (columnBase.ColumnElement as GridHeaderCellControl);
                    if (prevHiddenIndex != columnIndex)
                    {
                        columnBase       = headerRow.VisibleColumns.FirstOrDefault(column => column.ColumnIndex == prevHiddenIndex);
                        prevColumnHeader = columnBase.ColumnElement as GridHeaderCellControl;
                    }
                    dataGrid.VisualContainer.ColumnWidths.SetHidden(dragLine.LineIndex, dragLine.LineIndex, true);
                    dataGrid.Columns[dataGrid.ResolveToGridVisibleColumnIndex(dragLine.LineIndex)].IsHidden = true;
                    dataGrid.Columns[dataGrid.ResolveToGridVisibleColumnIndex(dragLine.LineIndex)].Width    = 0.0;
                }
            }
            if (dataGrid.SelectionController.CurrentCellManager.HasCurrentCell && dataGrid.SelectionController.CurrentCellManager.CurrentRowColumnIndex.ColumnIndex == dragLine.LineIndex)
            {
#if !WPF
                dataGrid.Focus(FocusState.Programmatic);
#endif
            }
            dragLine = null;
#if !WPF
            headerCell.ReleasePointerCaptures();
            if (Window.Current.CoreWindow.PointerCursor.Type != CoreCursorType.Arrow)
            {
                Window.Current.CoreWindow.PointerCursor = new CoreCursor(CoreCursorType.Arrow, 1);
            }
#else
            headerCell.isMouseLeftButtonPressed = false;
            headerCell.ReleaseMouseCapture();
            if (headerCell.Cursor != Cursors.Arrow)
            {
                SetPointerCursor(Cursors.Arrow, headerCell);
            }
            //WRT-4573 - While clicking on HeaderCell border on Resizing, the sorting operation is done in WinRT. Hence
            //the flag is skipped to set false which will be set on mouse move.
            this.isHovering = false;
#endif
        }