Back to Devexpress

VectorLayerBase.ToolTipContentTemplate Property

wpf-devexpress-dot-xpf-dot-map-dot-vectorlayerbase-77d5c9f5.md

latest8.1 KB
Original Source

VectorLayerBase.ToolTipContentTemplate Property

Gets or sets the template that defines the presentation of the tooltip content for a vector element.

Namespace : DevExpress.Xpf.Map

Assembly : DevExpress.Xpf.Map.v25.2.dll

NuGet Package : DevExpress.Wpf.Map

Declaration

csharp
[NonCategorized]
public DataTemplate ToolTipContentTemplate { get; set; }
vb
<NonCategorized>
Public Property ToolTipContentTemplate As DataTemplate

Property Value

TypeDescription
DataTemplate

A DataTemplate object that contains the tooltip content template.

|

Example

You can utilize the VectorLayerBase.ToolTipContentTemplate property to manage the tooltip’s content when map pies have an unknown number of segments:

The following code produces the image above:

xaml
<dx:ThemedWindow xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core" 
                 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
                 xmlns:dxm="http://schemas.devexpress.com/winfx/2008/xaml/map" 
                 xmlns:dxmt="http://schemas.devexpress.com/winfx/2008/xaml/map/themekeys" 
                 xmlns:dxi="http://schemas.devexpress.com/winfx/2008/xaml/core/internal" 
                 xmlns:local="clr-namespace:ToolTipSample"
                 x:Class="ToolTipSample.MainWindow" 
                 Title="MainWindow" 
                 Height="720" 
                 Width="1280">
    <dx:ThemedWindow.Resources>
        <local:ToolTipInfoToMapPieConverter x:Key="tooltipInfoToMapPieConverter" />
        <DataTemplate x:Key="tooltipSegmentTemplate">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition SharedSizeGroup="SegmentIdSizeGroup" />
                    <ColumnDefinition SharedSizeGroup="SegmentValueSizeGroup" />
                </Grid.ColumnDefinitions>
                <TextBlock Text="{Binding SegmentId}"
                           Margin="0,0,16,0"
                           FontSize="16" 
                           Foreground="{dxi:ThemeResource {dxmt:MapBrushesThemeKey ResourceKey=ToolTipForeground}}" />
                <TextBlock Grid.Column="1"
                           Text="{Binding Value}" 
                           TextAlignment="Right"
                           FontSize="16" 
                           Foreground="{dxi:ThemeResource {dxmt:MapBrushesThemeKey ResourceKey=ToolTipForeground}}" />
            </Grid>
        </DataTemplate>
        <DataTemplate x:Key="tooltipContentTemplate">
            <StackPanel Orientation="Vertical" 
                        DataContext="{Binding Converter={StaticResource tooltipInfoToMapPieConverter}}"
                        Margin="16">
                <TextBlock Text="{Binding ItemId}" 
                           FontSize="24" 
                           Foreground="{dxi:ThemeResource {dxmt:MapBrushesThemeKey ResourceKey=ToolTipForeground}}" />
                <ItemsControl ItemsSource="{Binding Segments}" 
                              ItemTemplate="{StaticResource tooltipSegmentTemplate}"/>
            </StackPanel>
        </DataTemplate>
    </dx:ThemedWindow.Resources>
    <Grid>
        <dxm:MapControl x:Name="mapControl" ToolTipEnabled="True">
            <dxm:MapControl.Layers>
                <dxm:ImageLayer>
                    <dxm:ImageLayer.DataProvider>
                        <dxm:BingMapDataProvider BingKey="YOUR_BING_KEY"
                                                 Kind="Road"/>
                    </dxm:ImageLayer.DataProvider>
                </dxm:ImageLayer>
                <dxm:VectorLayer x:Name="pieLayer" 
                                 DataLoaded="OnPieLayerDataLoaded" 
                                 ToolTipContentTemplate="{StaticResource tooltipContentTemplate}">
                    <dxm:VectorLayer.Colorizer>
                        <dxm:KeyColorColorizer>
                            <dxm:KeyColorColorizer.ItemKeyProvider>
                                <dxm:IdItemKeyProvider />
                            </dxm:KeyColorColorizer.ItemKeyProvider>
                        </dxm:KeyColorColorizer>
                    </dxm:VectorLayer.Colorizer>
                    <dxm:VectorLayer.Data>
                        <dxm:PieChartDataAdapter DataSource="{Binding EnergyStatisticsItems}" 
                                                 ItemIdDataMember="Country" 
                                                 ItemMinSize="25"
                                                 ItemMaxSize="100">
                            <dxm:PieChartDataAdapter.Mappings>
                                <dxm:MapPieMappingInfo Latitude="Latitude" 
                                                       Longitude="Longitude" 
                                                       SegmentId="EnergyType" 
                                                       SegmentValue="Production" />
                            </dxm:PieChartDataAdapter.Mappings>
                        </dxm:PieChartDataAdapter>
                    </dxm:VectorLayer.Data>
                </dxm:VectorLayer>
            </dxm:MapControl.Layers>
            <dxm:MapControl.Legends>
                <dxm:ColorListLegend Layer="{Binding ElementName=pieLayer}" />
            </dxm:MapControl.Legends>
        </dxm:MapControl>
    </Grid>
</dx:ThemedWindow>
csharp
using System;
using System.Globalization;
using System.Windows.Data;
using DevExpress.Xpf.Map;

namespace ToolTipSample {
    public partial class MainWindow : DevExpress.Xpf.Core.ThemedWindow {
        public MainWindow() {
            InitializeComponent();
        }

        private void OnPieLayerDataLoaded(object sender, DataLoadedEventArgs e) {
            mapControl.ZoomToFitLayerItems();
        }
    }

    class ToolTipInfoToMapPieConverter : IValueConverter {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture) {
            if (!(value is ToolTipInfo info)) return null;
            if (!(info.Layer is VectorLayer vectorLayer)) return null;
            return vectorLayer.Data.GetItemBySourceObject(info.Item) as MapPie;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) {
            throw new NotSupportedException();
        }
    }
}
vb
Imports System.Globalization
Imports DevExpress.Xpf.Map

Class MainWindow
    Private Sub OnPieLayerDataLoaded(sender As Object, e As DataLoadedEventArgs)
        mapControl.ZoomToFitLayerItems()
    End Sub
End Class

Class ToolTipInfoToMapPieConverter
    Implements IValueConverter

    Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IValueConverter.Convert
        Dim info = TryCast(value, ToolTipInfo)
        If ((info Is Nothing)) Then Return Nothing
        Dim vectorLayer = TryCast(info.Layer, VectorLayer)
        If (vectorLayer Is Nothing) Then Return Nothing
        Return TryCast(vectorLayer.Data.GetItemBySourceObject(info.Item), MapPie)
    End Function

    Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IValueConverter.ConvertBack
        Throw New NotSupportedException()
    End Function
End Class

See Also

VectorLayerBase Class

VectorLayerBase Members

DevExpress.Xpf.Map Namespace