/// <summary>
        /// Update Tool Tip which show tool tip when mouse enter on GridUnBoundRowCell.
        /// </summary>
        /// <param name="dataColumn">Which hold GridUnBoundRowCell, GridColumn and Cell's row Column index</param>
        public override void UpdateToolTip(DataColumnBase dataColumn)
        {
            var uiElement = dataColumn.ColumnElement;
            var column    = dataColumn.GridColumn;

            if (column == null || !column.ShowToolTip)
            {
                uiElement.ClearValue(ToolTipService.ToolTipProperty);
                return;
            }
            var     obj = ToolTipService.GetToolTip(uiElement);
            ToolTip tooltip;

            if (obj is ToolTip)
            {
                tooltip = obj as ToolTip;
            }
            else
            {
                tooltip = new ToolTip();
            }
            var dataContext = dataColumn.GridUnBoundRowEventsArgs;

            if (column.hasToolTipTemplate || column.hasToolTipTemplateSelector)
            {
                if (column.SetCellBoundToolTip)
                {
                    var dataContextHelper = new DataContextHelper
                    {
                        Record = dataContext,
                        Value  = dataContext.Value
                    };
                    tooltip.Content = dataContextHelper;

                    if (column.hasToolTipTemplate)
                    {
                        tooltip.ContentTemplate = column.ToolTipTemplate;
                    }
                    else if (column.hasToolTipTemplateSelector)
                    {
                        tooltip.ContentTemplateSelector = column.ToolTipTemplateSelector;
                    }
                }
                else
                {
                    tooltip.Content = dataContext.Value;
                }
            }
            else
            {
                var displayText = Convert.ToString(dataContext.Value);
                tooltip.Content = displayText;
                if (string.IsNullOrEmpty(displayText))
                {
                    tooltip.IsEnabled = false;
                }
            }
            //Specifies to raise tooltip opening event for the corresponding cell
            if (dataColumn.RaiseCellToolTipOpening(tooltip))
            {
                ToolTipService.SetToolTip(uiElement, tooltip);
            }
            else
            {
                uiElement.ClearValue(ToolTipService.ToolTipProperty);
            }
        }
        /// <summary>
        /// Updates the tool tip for GridCell.
        /// </summary>
        /// <param name="dataColumn">Which holds GridColumn, Row Column Index and GridCell</param>
        public override void UpdateToolTip(DataColumnBase dataColumn)
        {
            var uiElement = dataColumn.ColumnElement;
            var column    = dataColumn.GridColumn;

            if (dataColumn.IsEditing || column == null || !column.ShowToolTip ||
                this is GridSummaryCellRenderer || this is GridCaptionSummaryCellRenderer ||
                this is GridTableSummaryCellRenderer)
            {
                uiElement.ClearValue(ToolTipService.ToolTipProperty);
                return;
            }

            object  dataContext = dataColumn.ColumnElement.DataContext;
            var     obj         = ToolTipService.GetToolTip(uiElement);
            ToolTip tooltip;

            if (obj is ToolTip)
            {
                tooltip = obj as ToolTip;
            }
            else
            {
                tooltip = new ToolTip();
            }
            if (column.hasToolTipTemplate || column.hasToolTipTemplateSelector)
            {
                if (column.SetCellBoundToolTip)
                {
                    var dataContextHelper = new DataContextHelper {
                        Record = dataContext
                    };
                    dataContextHelper.SetValueBinding(column.DisplayBinding, dataContext);
                    tooltip.Content = dataContextHelper;
                }
                else
                {
                    tooltip.Content = dataContext;
                }

                if (column.hasToolTipTemplate)
                {
                    tooltip.ContentTemplate = column.ToolTipTemplate;
                }
                else if (column.hasToolTipTemplateSelector)
                {
                    tooltip.ContentTemplateSelector = column.ToolTipTemplateSelector;
                }
            }
            else
            {
                //UWP-2846 - ToolTip value shown as namespace of the boolean instead of value either True or False for the CheckBoxColumn in UWP
                //So removed the code to set binding for ToolTip and assigned the cell value directly to the Content property
                //tooltip.SetBinding(ContentControl.ContentProperty, column.DisplayBinding);
                var provider = column.DataGrid.View.GetPropertyAccessProvider();
                if (provider != null)
                {
                    var displayText = Convert.ToString(provider.GetDisplayValue(dataColumn.ColumnElement.DataContext, column.MappingName, column.UseBindingValue));
                    tooltip.Content = displayText;
                    if (string.IsNullOrEmpty(displayText))
                    {
                        tooltip.IsEnabled = false;
                    }
                }
            }
            //WPF -23277 Unbound column display and value binding has been created based on its dummy mapping name. hence this content will be null.
            // so that have set the tooltip content directly for unbound column
            if (column.IsUnbound)
            {
                var unboundCellValue = Convert.ToString(this.DataGrid.GetUnBoundCellValue(column, dataColumn.ColumnElement.DataContext));
                tooltip.Content = unboundCellValue;
                if (string.IsNullOrEmpty(unboundCellValue))
                {
                    tooltip.IsEnabled = false;
                }
            }
            //Specifies to raise tooltip opening event for the corresponding cell
            if (dataColumn.RaiseCellToolTipOpening(tooltip))
            {
                ToolTipService.SetToolTip(uiElement, tooltip);
            }
            else
            {
                uiElement.ClearValue(ToolTipService.ToolTipProperty);
            }
        }