wpf-devexpress-dot-xpf-dot-map-dot-mapcustomelementsettings-f3c59cea.md
Gets or sets the content template selector.
Namespace : DevExpress.Xpf.Map
Assembly : DevExpress.Xpf.Map.v25.2.dll
NuGet Package : DevExpress.Wpf.Map
public DataTemplateSelector ContentTemplateSelector { get; set; }
Public Property ContentTemplateSelector As DataTemplateSelector
| Type | Description |
|---|---|
| DataTemplateSelector |
A DataTemplateSelector object.
|
You can access this nested property as listed below:
| Object Type | Path to ContentTemplateSelector |
|---|---|
| MapCustomElementSettings |
.Default .ContentTemplateSelector
|
This example demonstrates how to use several templates for generated custom map elements.
To do this, specify the MapCustomElementSettings.ContentTemplateSelector property of the MapCustomElementSettings object assigned to the ListSourceDataAdapter.ItemSettings property.
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MapCustomElementSettings"
xmlns:dxm="http://schemas.devexpress.com/winfx/2008/xaml/map"
x:Class="MapCustomElementSettings.MainWindow"
Title="MainWindow" Height="350" Width="525"
Loaded="Window_Loaded">
<Window.Resources>
<XmlDataProvider x:Key="dataSet" Source="disasters.xml" XPath="/Disasters"/>
<DataTemplate x:Key="AirRaidsMapMarker">
<Ellipse Fill="LightBlue" Width="20" Height="20">
<Ellipse.RenderTransform>
<TranslateTransform X="-10" Y="-10"/>
</Ellipse.RenderTransform>
</Ellipse>
</DataTemplate>
<DataTemplate x:Key="BushfiresMapMarker">
<Ellipse Fill="Firebrick" Width="20" Height="20">
<Ellipse.RenderTransform>
<TranslateTransform X="-10" Y="-10"/>
</Ellipse.RenderTransform>
</Ellipse>
</DataTemplate>
<DataTemplate x:Key="CycloneMapMarker">
<Ellipse Fill="LightSlateGray" Width="20" Height="20">
<Ellipse.RenderTransform>
<TranslateTransform X="-10" Y="-10"/>
</Ellipse.RenderTransform>
</Ellipse>
</DataTemplate>
<DataTemplate x:Key="EpidemicMapMarker">
<Ellipse Fill="DarkOliveGreen" Width="20" Height="20">
<Ellipse.RenderTransform>
<TranslateTransform X="-10" Y="-10"/>
</Ellipse.RenderTransform>
</Ellipse>
</DataTemplate>
<DataTemplate x:Key="SinkingMapMarker">
<Ellipse Fill="Blue" Width="20" Height="20">
<Ellipse.RenderTransform>
<TranslateTransform X="-10" Y="-10"/>
</Ellipse.RenderTransform>
</Ellipse>
</DataTemplate>
<DataTemplate x:Key="tooltipTemplate">
<StackPanel Orientation="Vertical" Margin="4">
<StackPanel Orientation="Horizontal">
<TextBlock Padding="4" Text="Disaster Type:" Foreground="#FFE2E2E2" FontSize="18"/>
<TextBlock Padding="4" Text="{Binding Item.Type}" Foreground="#FFE2E2E2" FontSize="18"/>
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Padding="4,2,2,2" Text="Location:" Foreground="#FFE2E2E2" FontSize="14"/>
<TextBlock Padding="2,2,2,4" Text="{Binding Item.LocationName}" Foreground="#FFE2E2E2" FontSize="14"/>
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Padding="4,2,2,4" Text="Deaths:" Foreground="#FFE2E2E2" FontSize="14"/>
<TextBlock Padding="4,2,2,4" Text="{Binding Item.Deaths}" Foreground="#FFE2E2E2" FontSize="14"/>
</StackPanel>
</StackPanel>
</DataTemplate>
</Window.Resources>
<Grid>
<dxm:MapControl CenterPoint="-25, 135" ZoomLevel="3" ToolTipEnabled="True">
<dxm:ImageTilesLayer>
<dxm:BingMapDataProvider BingKey="Your Bing Key"/>
</dxm:ImageTilesLayer>
<dxm:VectorLayer ToolTipContentTemplate="{StaticResource tooltipTemplate}">
<dxm:ListSourceDataAdapter DataSource="{Binding Disasters}">
<dxm:ListSourceDataAdapter.AttributeMappings>
<dxm:MapItemAttributeMapping Name="LocationName" Member="LocationName"/>
<dxm:MapItemAttributeMapping Name="Type" Member="Type"/>
<dxm:MapItemAttributeMapping Name="Deaths" Member="Deaths"/>
</dxm:ListSourceDataAdapter.AttributeMappings>
<dxm:ListSourceDataAdapter.Mappings>
<dxm:MapItemMappingInfo Latitude="LocationLatitude"
Longitude="LocationLongitude"/>
</dxm:ListSourceDataAdapter.Mappings>
<dxm:ListSourceDataAdapter.ItemSettings>
<dxm:MapCustomElementSettings>
<dxm:MapCustomElementSettings.ContentTemplateSelector>
<local:MarkerTemplateSelector
AirRaidsDataTemplate="{StaticResource AirRaidsMapMarker}"
BushfiresDataTemplate="{StaticResource BushfiresMapMarker}"
CycloneDataTemplate="{StaticResource CycloneMapMarker}"
EpidemicDataTemplate="{StaticResource EpidemicMapMarker}"
SinkingDataTemplate="{StaticResource SinkingMapMarker}"/>
</dxm:MapCustomElementSettings.ContentTemplateSelector>
</dxm:MapCustomElementSettings>
</dxm:ListSourceDataAdapter.ItemSettings>
</dxm:ListSourceDataAdapter>
</dxm:VectorLayer>
</dxm:MapControl>
</Grid>
</Window>
Imports System.Collections.Generic
Imports System.Windows
Imports System.Windows.Controls
Imports System.Windows.Documents
Imports System.Xml
Imports System.Xml.Serialization
Imports DevExpress.Xpf.Map
Namespace MapCustomElementSettings
Partial Public Class MainWindow
Inherits Window
Private Const filepath As String = "..//..//disasters.xml"
Private disasters_Renamed As List(Of Disaster)
Public ReadOnly Property Disasters() As List(Of Disaster)
Get
Return disasters_Renamed
End Get
End Property
Public Sub New()
InitializeComponent()
End Sub
Private Sub Window_Loaded(ByVal sender As Object, ByVal e As RoutedEventArgs)
disasters_Renamed = DeserializeXml(filepath)
Me.DataContext = Me
End Sub
Private Function DeserializeXml(ByVal filepath As String) As List(Of Disaster)
Dim serializer As New XmlSerializer(GetType(List(Of Disaster)))
Dim reader As XmlReader = New XmlTextReader(filepath)
Dim data As List(Of Disaster) = DirectCast(serializer.Deserialize(reader), List(Of Disaster))
reader.Close()
Return data
End Function
End Class
Friend Class MarkerTemplateSelector
Inherits DataTemplateSelector
Public Property AirRaidsDataTemplate() As DataTemplate
Public Property BushfiresDataTemplate() As DataTemplate
Public Property CycloneDataTemplate() As DataTemplate
Public Property SinkingDataTemplate() As DataTemplate
Public Property EpidemicDataTemplate() As DataTemplate
Public Overrides Function SelectTemplate(ByVal item As Object, ByVal container As DependencyObject) As DataTemplate
Dim disaster As Disaster = TryCast(item, Disaster)
If disaster Is Nothing Then
Return MyBase.SelectTemplate(item, container)
End If
Select Case disaster.Type
Case "Air Raids"
Return AirRaidsDataTemplate
Case "Bushfires"
Return BushfiresDataTemplate
Case "Cyclone"
Return CycloneDataTemplate
Case "Sinking"
Return SinkingDataTemplate
Case "Epidemic"
Return EpidemicDataTemplate
Case Else
Return MyBase.SelectTemplate(item, container)
End Select
End Function
End Class
Public Class Disaster
Public Property Type() As String
Public Property LocationLatitude() As Double
Public Property LocationLongitude() As Double
Public Property LocationName() As String
Public Property Deaths() As Integer
End Class
End Namespace
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Xml;
using System.Xml.Serialization;
using DevExpress.Xpf.Map;
namespace MapCustomElementSettings {
public partial class MainWindow : Window {
const string filepath = "..//..//disasters.xml";
List<Disaster> disasters;
public List<Disaster> Disasters { get { return disasters; } }
public MainWindow() {
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e) {
disasters = DeserializeXml(filepath);
this.DataContext = this;
}
List<Disaster> DeserializeXml(string filepath) {
XmlSerializer serializer = new XmlSerializer(typeof(List<Disaster>));
XmlReader reader = new XmlTextReader(filepath);
List<Disaster> data = (List<Disaster>)serializer.Deserialize(reader);
reader.Close();
return data;
}
}
class MarkerTemplateSelector : DataTemplateSelector {
public DataTemplate AirRaidsDataTemplate { get; set; }
public DataTemplate BushfiresDataTemplate { get; set; }
public DataTemplate CycloneDataTemplate { get; set; }
public DataTemplate SinkingDataTemplate { get; set; }
public DataTemplate EpidemicDataTemplate { get; set; }
public override DataTemplate SelectTemplate(object item, DependencyObject container) {
Disaster disaster = item as Disaster;
if (disaster == null) return base.SelectTemplate(item, container);
switch (disaster.Type) {
case "Air Raids": return AirRaidsDataTemplate;
case "Bushfires": return BushfiresDataTemplate;
case "Cyclone": return CycloneDataTemplate;
case "Sinking": return SinkingDataTemplate;
case "Epidemic": return EpidemicDataTemplate;
default: return base.SelectTemplate(item, container);
}
}
}
public class Disaster {
public string Type { get; set; }
public double LocationLatitude { get; set; }
public double LocationLongitude { get; set; }
public string LocationName { get; set; }
public int Deaths { get; set; }
}
}
See Also
MapCustomElementSettings Class