Hi Andrey,
I have kinda moved away of this for a while. So, I tried to cast the elements from the list into their respective types and attached the mouse enter event handler. And in the handler, I tried to change the cursor icon. But the icon doesn't change when the mouse enters the element.
Here's my XAML:
<UserControl x:Class="TestMouseCursorIcon.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<Grid x:Name="LayoutRoot" Background="White">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Button Content="Load Map" Height="50" Width="75" Click="Button_Click" />
<telerik:RadMap Name="MyMap" Grid.Row="1">
<telerik:InformationLayer Name="infolayer"/>
</telerik:RadMap>
</Grid>
</UserControl>
CodeBehind:
using System;
using System.Collections.Generic;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.IO;
using Telerik.Windows.Controls.Map;
namespace TestMouseCursorIcon
{
public partial class MainPage : UserControl
{
List<FrameworkElement> Items = new List<FrameworkElement>();
public MainPage()
{
InitializeComponent();
this.MyMap.Provider = new BingMapProvider();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
WebClient webclient = new WebClient();
webclient.OpenReadCompleted += new OpenReadCompletedEventHandler(webclient_OpenReadCompleted);
webclient.OpenReadAsync(new Uri("/PhaseAngleOverlay.Kml", UriKind.Relative));
}
void webclient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
StreamReader sr = new StreamReader(e.Result);
Items = KmlReader.Read(sr.ReadToEnd());
foreach (FrameworkElement item in Items)
{
if (item.GetType() == typeof(MapShape))
{
var placemark = item as MapShape;
placemark.MouseEnter += new MouseEventHandler(placemark_MouseEnter);
}
if (item.GetType() == typeof(MapPinPoint))
{
var placemark = item as MapPinPoint;
placemark.MouseEnter += new MouseEventHandler(placemark_MouseEnter);
}
if (item.GetType() == typeof(MapPolyline))
{
var placemark = item as MapPolyline;
placemark.MouseEnter += new MouseEventHandler(placemark_MouseEnter);
}
if (item.GetType() == typeof(MapPolygon))
{
var placemark = item as MapPolygon;
placemark.MouseEnter += new MouseEventHandler(placemark_MouseEnter);
}
}
this.infolayer.ItemsSource = Items;
}
void placemark_MouseEnter(object sender, MouseEventArgs e)
{
if (sender.GetType() == typeof(MapShape))
{
MapShape shape = sender as MapShape;
shape.Cursor = Cursors.Hand;
}
if (sender.GetType() == typeof(MapPinPoint))
{
MapPinPoint point = sender as MapPinPoint;
point.Cursor = Cursors.Hand;
}
if (sender.GetType() == typeof(MapPolyline))
{
MapPolyline line = sender as MapPolyline;
line.Cursor = Cursors.Hand;
}
}
}
}
MyKML:
<?xml version="1.0" encoding="utf-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
<Document>
<name>Phase Angle Vector KML</name>
<Style id="sn_intersectionStyle">
<LineStyle>
<color>FFFFFFFF</color>
<width>4</width>
</LineStyle>
</Style>
<Style id="sn_vectorLineGreen">
<LineStyle>
<color>FF00FF00</color>
<width>2</width>
</LineStyle>
</Style>
<Style id="sn_vectorLineYellow">
<LineStyle>
<color>FF00FFFF</color>
<width>2</width>
</LineStyle>
</Style>
<Style id="sn_vectorLineRed">
<LineStyle>
<color>FF0000FF</color>
<width>2</width>
</LineStyle>
</Style>
<Placemark>
<name>Element1</name>
<description>JohnDavid</description>
<styleUrl>#sn_intersectionStyle</styleUrl>
<Polygon>
<outerBoundaryIs>
<LinearRing>
<coordinates>-120.723791532451,45.7178720040713,0 -120.723042216871,45.7167065629117,0 -120.722148683575,45.7155914399742,0 -120.721117651737,45.7145353512768,0 -120.71995692431,45.7135466030573,0 -120.718675341561,45.7126330223076,0 -120.717282730733,45.7118018893886,0 -120.71578984388,45.7110598723788,0 -120.714208282746,45.7104129634789,0 -120.712550415568,45.709866416927,0 -120.710829281689,45.7094246987039,0 -120.709058478211,45.7090914343267,0 -120.707252055286,45.7088693685708,0 -120.705424382736,45.7087603355137,0 -120.703590024342,45.7087652389643,0 -120.701763607439,45.7088840378903,0 -120.699959685707,45.7091157483318,0 -120.698192606766,45.7094584574452,0 -120.696476384111,45.7099093425624,0 -120.694824574286,45.7104647031513,0 -120.693250160848,45.711120006123,0 -120.691765449556,45.7118699304845,0 -120.690381973793,45.7127084225077,0 -120.68911040771,45.713628759444,0 -120.687960497649,45.71462361141,0 -120.686940994711,45.7156851074371,0 -120.68605961108,45.7168049044219,0 -120.68532297283,45.7179742525761,0 -120.684736587706,45.7191840663949,0 -120.684304822755,45.7204249863583,0 -120.68403088533,45.7216874505123,0 -120.683916807235,45.7229617542546,0 -120.683963442314,45.7242381152096,0 -120.684170457127,45.7255067374552,0 -120.684536334482,45.7267578755837,0 -120.685058380442,45.7279818959484,0 -120.685732730552,45.7291693408886,0 -120.686554366431,45.7303109971588,0 -120.687517139168,45.7313979605626,0 -120.68861379747,45.7324217019272,0 -120.689836020404,45.7333741362784,0 -120.691174472166,45.7342476918544,0 -120.692618851299,45.7350353762671,0 -120.694157965234,45.7357308415157,0 -120.695779803522,45.736328446695,0 -120.697471635462,45.7368233180088,0 -120.699220108328,45.7372113968384,0 -120.701011357426,45.7374894879261,0 -120.70283113039,45.7376552924577,0 -120.704664915621,45.7377074371847,0 -120.706498070807,45.7376454908185,0 -120.708315959676,45.7374699661779,0 -120.710104086573,45.7371823166076,0 -120.711848227944,45.7367849187849,0 -120.713534559432,45.7362810441025,0 -120.715149777161,45.7356748226792,0 -120.716681206443,45.7349711974711,0 -120.718116907785,45.7341758718994,0 -120.719445758675,45.7332952519472,0 -120.720657539559,45.7323363824522,0 -120.721742999029,45.7313068813885,0 -120.722693909214,45.7302148752267,0 -120.723503108884,45.7290689270537,0 -120.72416454583,45.7278779721459,0 -120.724673300551,45.7266512464086,0 -120.725025611096,45.7253982253446,0 -120.725218880037,45.7241285529397,0 -120.725251695774,45.722851983515,0 -120.725123825168,45.7215783149032,0 -120.724836222619,45.7203173231011,0 -120.724391022506,45.7190787037061,0 -120.723791532451,45.7178720040713,0</coordinates>
</LinearRing>
</outerBoundaryIs>
</Polygon>
</Placemark>
<Placemark>
<name>Element2</name>
<styleUrl>#sn_vectorLineYellow</styleUrl>
<LineString>
<coordinates>-120.695315545739,45.7361573784503,0 -119.029291010421,47.9537808164508,0</coordinates>
</LineString>
</Placemark>
<Placemark>
<name>30</name>
<Point>
<coordinates>-118.856,46.9539,0</coordinates>
</Point>
</Placemark>
</Document>
</kml>
I can see the cursor changing for the "Point" but not for the Polyline and Polygon. Can you guide me where am I going wrong.
Thanks in advance,
Viddy.