/// <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); } }