Back to Devexpress

MapItem.ToolTipPattern Property

windowsforms-devexpress-dot-xtramap-dot-mapitem-83fa2e61.md

latest8.0 KB
Original Source

MapItem.ToolTipPattern Property

Gets or sets a string which represents the pattern specifying the text to be displayed within a tooltip that appears for a map item.

Namespace : DevExpress.XtraMap

Assembly : DevExpress.XtraMap.v25.2.dll

NuGet Package : DevExpress.Win.Map

Declaration

csharp
[DefaultValue("")]
public string ToolTipPattern { get; set; }
vb
<DefaultValue("")>
Public Property ToolTipPattern As String

Property Value

TypeDefaultDescription
StringString.Empty

A string value that is the tooltip pattern.

|

Remarks

The pattern string can contain placeholders that the Map Control replaces with specific values when generating tooltip text for a map item. The tooltip pattern supports the following groups of placeholders:

Attribute Placeholders

These placeholders define values of map item attributes and enclosed with braces (“{“, “}”). For example the “{NAME}: ${GDP_MD_EST:#,0}M” pattern utilizes two placeholders. The first placeholder is for the NAME attribute and the second placeholder is for the GDP_MD_EST attribute. Note that the second placeholder has the #,0 format string that goes after the “:” symbol.

Map Chart Value Placeholders

The Map Control uses this placeholder group to display map bubbles’ and map pies’ arguments and values in the tooltip. The “%” symbol encloses these placeholders. The following table lists available placeholders:

PlaceholderPlaceholder’s meaning for Map BubblesPlaceholder’s meaning for Map Pies
AA map bubble’s argument.Data objects’ PieChartDataAdapter.PieItemDataMember field value when the Pie Chart Data adapter generates map pies.
VA map bubble’s value.A map pie’s total value.
A<index>Is not supported.An argument of a map pie segment with the specified index.
V<index>Is not supported.A value of a map pie segment with the specified index.

For example, the “%A0%: %V0%\r\n%A1%: %V1%\r\n%A2%: %V2%” pattern generates the text that displays the first three segments’ arguments and values.

The chart value attributes with indices are useful when all map pies have a similar number of segments. You can use the ToolTip Controller to manage the tooltip’s content when map pies have various segment counts:

csharp
private void Form1_Load(object sender, EventArgs e) {
    ToolTipController toolTipController = new ToolTipController();
    toolTipController.BeforeShow += OnBeforeShowToolTip;
    mapControl.ToolTipController = toolTipController;
}

private void OnBeforeShowToolTip(object sender, ToolTipControllerShowEventArgs e) {
    if (!(e.SelectedObject is MapPie mapPie)) return;
    e.Title = mapPie.Argument.ToString();
    e.ToolTip = BuildSegmentsTooltip(mapPie.Segments);
}

private string BuildSegmentsTooltip(PieSegmentCollection segments) {
    if (segments.Count == 0) return String.Empty;
    var segment = segments[0];
    var builder = new StringBuilder()
        .Append(segment.Argument)
        .Append(": ")
        .Append(segment.Value);
    for (int i = 1; i < segments.Count; i++) {
        segment = segments[i];
        builder.Append(Environment.NewLine)
               .Append(segment.Argument)
               .Append(": ")
               .Append(segment.Value);
    }
    return builder.ToString();
}
vb
Private Sub Form1_Load(object sender, EventArgs e) {
    Dim toolTipController As ToolTipController = New ToolTipController()
    AddHandler toolTipController.BeforeShow AddressOf OnBeforeShowToolTip
    mapControl.ToolTipController = toolTipController
}

Private Sub OnBeforeShowToolTip(sender As Object, e As ToolTipControllerShowEventArgs)
    Dim mapPie As MapPie = TryCast(e.SelectedObject, MapPie)
    If (mapPie Is Nothing) Then Return
    e.Title = mapPie.Argument.ToString()
    e.ToolTip = BuildSegmentsTooltip(mapPie.Segments)
End Sub

Private Function BuildSegmentsTooltip(segments As PieSegmentCollection) As String
    If (segments.Count Is 0) Return String.Empty
    Dim segment = segments[0]
    Dim builder = New StringBuilder()
        .Append(segment.Argument)
        .Append(": ")
        .Append(segment.Value)
    For i As Integer = 1 To segments.Count
        segment = segments[i]
        builder.Append(Environment.NewLine)
               .Append(segment.Argument)
               .Append(": ")
               .Append(segment.Value)
    Next
    Return builder.ToString()
End Function

The code above utilizes the following classes and members:

SymbolDescription
ToolTipControllerA tooltip controller for individual UI controls.
ToolTipController.BeforeShowFires when a tooltip is about to be displayed. Allows you to dynamically specify the tooltip text, image, and appearance settings.
MapPieThe class used to draw a pie chart on a map.
MapPie.ArgumentGets or sets an object, which provides arguments for the MapPie.
MapPie.SegmentsGets or sets segments of a map pie.
PieSegmentA segment of a pie chart item.
PieSegment.ArgumentGets or sets an object, which provides arguments for the PieSegment.
PieSegment.ValueGets or sets the value of the pie segment.

Example

csharp
private MapPolygon CreatePolygon(double areaValue, string polygonName, GeoPoint[] points) {
    MapPolygon item = new MapPolygon();

    item.Attributes.Add(new MapItemAttribute() {
        Name = areaValueAttrName,
        Type = typeof(double),
        Value = areaValue
    });
    item.Attributes.Add(new MapItemAttribute() {
        Name = polygonNameAttrName,
        Type = typeof(string),
        Value = polygonName
    });

    item.ToolTipPattern = "{" + polygonNameAttrName + "}=<b>{" + areaValueAttrName + "}</b>";

    foreach (GeoPoint point in points) {
        item.Points.Add(point);
    }

    return item;
}
vb
Private Function CreatePolygon(ByVal areaValue As Double, ByVal polygonName As String, ByVal points() As GeoPoint) As MapPolygon
    Dim item As New MapPolygon()

    item.Attributes.Add(New MapItemAttribute() With {.Name = areaValueAttrName, .Type = GetType(Double), .Value = areaValue})
    item.Attributes.Add(New MapItemAttribute() With {.Name = polygonNameAttrName, .Type = GetType(String), .Value = polygonName})

    item.ToolTipPattern = "{" & polygonNameAttrName & "}=<b>{" & areaValueAttrName & "}</b>"

    For Each point As GeoPoint In points
        item.Points.Add(point)
    Next point

    Return item
End Function

See Also

MapItem Class

MapItem Members

DevExpress.XtraMap Namespace