DataToolTipLayer tooltipLayer = new DataToolTipLayer()
{
HeaderText = "My Custom Data Tooltip Header",
SummaryType = DataLegendSummaryType.Total,
SummaryTitleText = "Grand Total:"
};
dataChart1.Series.Add(tooltipLayer);
In Ultimate UI for Windows Forms, the DataTooltipLayer displays values and titles of series as well as legend badges of series in a tooltip. In addition, it provides many configuration properties of the DataLegend for filtering series rows and values columns, styling, and formatting values. This tooltip type updates while moving the mouse inside of the plot area of the UltraCategoryChart, UltraFinancialChart, and UltraDataChart components.
All properties of DataTooltipLayer are prefixed with DataToolTip and exposed on API of UltraCategoryChart and UltraFinancialChart components. However, you will need to create an instance of DataTooltipLayer and add it to series collection of UltraDataChart component if you want to use it with Radial Charts, Polar Charts, Scatter Charts.
The DataTooltipLayer displays content using a set of three types of rows and four types of columns.
The rows of the DataTooltipLayer include the header row, series row(s), and the summary row.
The header row displays the axis label of the point that is hovered, and can be changed using the HeaderText property.
The series row can actually be a set of rows corresponding to each series plotted in the chart. These rows will display the legend badge, series title, actual/abbreviated value of the the series, and abbreviation symbol and unit, if specified.
Finally, there is a summary row that displays the total of all series values. The default summary title can be changed using the SummaryTitleText property of the series. Also, you can use the SummaryType property to customize whether you display the Total, Min, Max, or Average of series values in the summary row.
The following code snippet demonstrates setting the properties mentioned above to have a DataTooltipLayer with a Total
summary type with a custom title for the summary and a custom header:
In C#:
DataToolTipLayer tooltipLayer = new DataToolTipLayer()
{
HeaderText = "My Custom Data Tooltip Header",
SummaryType = DataLegendSummaryType.Total,
SummaryTitleText = "Grand Total:"
};
dataChart1.Series.Add(tooltipLayer);
The columns of the data tooltip include the title, label, value, and units columns. Each series in the chart can have multiple columns for label, value, and units depending on the IncludedColumns or ExcludedColumns collections of the tooltip layer.
The title column displays legend badges and series titles, which come from the Title
property of the different Series
plotted in the chart.
The label column displays the name or abbreviation of the different property paths in the IncludedColumns or ExcludedColumns collections of the tooltip layer.
The value column displays series values as abbreviated text which can be formatted using the ValueFormatAbbreviation property to apply the same abbreviation for all numbers by setting this property to Auto
or Shared
. Alternatively, a user can select other abbreviations such as Independent
, Kilo
, Million
, etc. Precision of abbreviated values is controlled using the ValueFormatMinFractions and ValueFormatMaxFractions for minimum and maximum digits, respectively.
The units column displays an abbreviation symbol and/or unit text, which can be set either on the DataTooltipLayer by setting the UnitsText for all columns or using the following properties on each series in the chart:
Category Series (e.g. ColumnSeries)
ValueMemberAsLegendUnit="K"
Financial Price Series:
OpenMemberAsLegendUnit="K"
LowMemberAsLegendUnit="K"
HighMemberAsLegendUnit="K"
CloseMemberAsLegendUnit="K"
Range Series:
LowMemberAsLegendUnit="K"
HighMemberAsLegendUnit="K"
Radial Series:
ValueMemberAsLegendUnit="km"
Polar Series:
RadiusMemberAsLegendUnit="km"
AngleMemberAsLegendUnit="degrees"
For each of the above-listed properties, there is a corresponding MemberAsLegendLabel
property as well to determine the text in the label columns mentioned previously.
The columns included in the IncludedColumns or ExcludedColumns generally correspond to the value paths of your underlying data items, but the financial series has the option to include some special ones in addition to the High
, Low
, Open
, and Close
paths that are required for the financial series to plot correctly. You have the ability to show TypicalPrice
, Change
, and Volume
options within the legend.
The following code snippet demonstrates a pair of ColumnSeries
with the ValueMemberAsLegendUnit properties set and the minimum/maximum fractions set on the DataTooltipLayer:
In C#:
EnergyData energyDataSource = new EnergyData();
CategoryXAxis xAxis = new CategoryXAxis()
{
ItemsSource = energyDataSource,
Label = "Location"
};
NumericYAxis yAxis = new NumericYAxis();
ColumnSeries series1 = new ColumnSeries()
{
XAxis = xAxis,
YAxis = yAxis,
ItemsSource = energyDataSource,
ValueMemberPath = "Coal",
ValueMemberAsLegendUnit = "K"
};
ColumnSeries series2 = new ColumnSeries()
{
XAxis = xAxis,
YAxis = yAxis,
ItemsSource = energyDataSource,
ValueMemberPath = "Solar",
ValueMemberAsLegendUnit = "K"
};
DataToolTipLayer tooltipLayer = new DataToolTipLayer()
{
ValueFormatMinFractions = 2,
ValueFormatMaxFractions = 4
};
dataChart1.Axes.Add(xAxis);
dataChart1.Axes.Add(yAxis);
dataChart1.Series.Add(series1);
dataChart1.Series.Add(series2);
dataChart1.Series.Add(tooltipLayer);
The DataTooltipLayer provides properties for styling each type of column. Each of these properties begins with Title, Label, Value, or Units, and you can style the text’s color, font, and margin. For example, if you wanted to set the text color of each of these, you would set the TitleTextColor, LabelTextColor, ValueTextColor, and UnitsTextColor properties.
The following code snippet demonstrates how to set the styling properties mentioned above:
In C#:
DataToolTipLayer tooltipLayer = new DataToolTipLayer()
{
TitleTextColor = Brushes.LightGray,
LabelTextColor = Brushes.LightGray,
ValueTextColor = Brushes.Green,
UnitsTextColor = Brushes.Green,
UnitsText = "K"
};
dataChart1.Series.Add(tooltipLayer);
You can set the GroupingMode property to either Grouped
or Individual
to group content for multiple series into single tooltip or separate content for each series in multiple tooltips. In the Grouped
mode, you can customize where the tooltip is shown by setting the GroupedPositionModeX and GroupedPositionModeY properties. This essentially allows you to customize the horizontal and vertical alignments of the tooltip and whether you want it to track to the closest series points to the mouse position or pin the tooltip to edge of plot area.
The following code snippet demonstrates a DataTooltipLayer that will be pinned to the top-left of the chart as you scroll:
In C#:
DataToolTipLayer tooltipLayer = new DataToolTipLayer()
{
GroupingMode = DataToolTipLayerGroupingMode.Grouped,
GroupedPositionModeX = DataTooltipGroupedPositionX.PinLeft,
GroupedPositionModeY = DataTooltipGroupedPositionY.PinTop
};
dataChart1.Series.Add(tooltipLayer);
The DataTooltipLayer provides automatic abbreviation of large numbers using its ValueFormatAbbreviation property. This adds a multiplier in the units column such as kilo, million, billion, etc. You can customize the number of fractional digits that are displayed by setting the ValueFormatMinFractions and ValueFormatMaxFractions. This will allow you to determine the minimum and maximum number of digits that appear after the decimal point, respectively.
The following code snippet demonstrates how to set the minimum and maximum fractions of the DataTooltipLayer:
In C#:
DataToolTipLayer tooltipLayer = new DataToolTipLayer()
{
ValueFormatMinFractions = 2,
ValueFormatMaxFractions = 4
};
dataChart1.Series.Add(tooltipLayer);
You can change the default decimal display of values within the DataTooltipLayer to be currency by changing the ValueFormatMode property of the layer. The DataTooltipLayer also exposes the ability to modify the culture of the displayed currency symbol by using its ValueFormatCulture property and setting it to its corresponding culture tag.
For example, the following code snippet will create a DataTooltipLayer with the ValueFormatCulture set to "en-GB" and the ValueFormatMode set to "Currency":
In C#:
DataToolTipLayer tooltipLayer = new DataToolTipLayer()
{
ValueFormatCulture = "en-GB",
ValueFormatMode = DataLegendValueMode.Currency
};
dataChart1.Series.Add(tooltipLayer);
DataLegendGroup can be set, on all types of series, to a string that will categorize a group of series in Data Legend. Each group will have its own summary row displayed before another group of series is displayed: By default, DataLegend will hide names of groups, but you can display group names by setting the - GroupRowVisible property to true. GroupingMode and LabelDisplayMode should be set to "Visible" on the Data Tooltip Layer.
Several properties are exposed including grouping portions of the legend.