Xaml 地图元素显示为文本(类名)
我在Windows Phone 8.1上使用WinRt MapControl。但当我尝试添加MapIcon或MapPolyline地图元素时,只会得到如下文本:Xaml 地图元素显示为文本(类名),xaml,windows-runtime,windows-phone-8.1,windows-phone,Xaml,Windows Runtime,Windows Phone 8.1,Windows Phone,我在Windows Phone 8.1上使用WinRt MapControl。但当我尝试添加MapIcon或MapPolyline地图元素时,只会得到如下文本: <maps:MapControl x:Name="MapOnScreenControl" MapServiceToken="12345"> <maps:MapPolyline Path="{Binding Route, Converter={St
<maps:MapControl x:Name="MapOnScreenControl"
MapServiceToken="12345">
<maps:MapPolyline Path="{Binding Route, Converter={StaticResource RouteToGeopathConverter}}"/>
</maps:MapControl>
XAML代码如下所示:
<maps:MapControl x:Name="MapOnScreenControl"
MapServiceToken="12345">
<maps:MapPolyline Path="{Binding Route, Converter={StaticResource RouteToGeopathConverter}}"/>
</maps:MapControl>
我做错了什么?谢谢。不幸的是,无法通过XAML将地图元素添加到地图中。您需要在代码中添加它们
MapOnScreenControl.MapElements.Add(new MapPolyline());
我喜欢做的一个技巧是使用viewmodel通过设置viewmodel的map
属性或mapements
属性向地图添加元素
private void MapPage_DataContextChanged(FrameworkElement sender, DataContextChangedEventArgs args)
{
var vm = DataContext as MapViewModel;
vm.MapElements = MyMap.MapElements;
}
然后,可以在viewmodel中向元素添加项目
您还可以使用MapItemsControl
添加项目集合
<maps:MapControl x:Name="Map" MapServiceToken="abcdef-abcdefghijklmno">
<maps:MapItemsControl ItemsSource="{Binding Locations}">
<maps:MapItemsControl.ItemTemplate>
<DataTemplate>
<Image Source="Assets/Mappin.png" Height="25"
maps:MapControl.NormalizedAnchorPoint="1,0.5"
maps:MapControl.Location="{Binding Geopoint}" />
</DataTemplate>
</maps:MapItemsControl.ItemTemplate>
</maps:MapItemsControl>
</maps:MapControl>
不幸的是,无法通过XAML将映射元素添加到映射中。您需要在代码中添加它们
MapOnScreenControl.MapElements.Add(new MapPolyline());
我喜欢做的一个技巧是使用viewmodel通过设置viewmodel的map
属性或mapements
属性向地图添加元素
private void MapPage_DataContextChanged(FrameworkElement sender, DataContextChangedEventArgs args)
{
var vm = DataContext as MapViewModel;
vm.MapElements = MyMap.MapElements;
}
然后,可以在viewmodel中向元素添加项目
您还可以使用MapItemsControl
添加项目集合
<maps:MapControl x:Name="Map" MapServiceToken="abcdef-abcdefghijklmno">
<maps:MapItemsControl ItemsSource="{Binding Locations}">
<maps:MapItemsControl.ItemTemplate>
<DataTemplate>
<Image Source="Assets/Mappin.png" Height="25"
maps:MapControl.NormalizedAnchorPoint="1,0.5"
maps:MapControl.Location="{Binding Geopoint}" />
</DataTemplate>
</maps:MapItemsControl.ItemTemplate>
</maps:MapItemsControl>
</maps:MapControl>
我不知道WinRt,但通常使用地图控件时,您不能将多段线放在地图上,您需要将它们放在图层中。我不知道WinRt,但通常使用地图控件时,您不能将多段线放在地图上,您需要将它们放在图层中。谢谢您的回答。我尝试使用与您描述的相同的xaml示例,但我的xaml MapItemControl元素不包含ItemTemplate属性。您正在使用Windows Phone 8.1?是的,Windows Phone 8.1感谢您的回答。我正在尝试使用与您描述的相同的xaml示例,但我的xaml MapItemControl元素不包含ItemTemplate属性。您正在使用Windows Phone 8.1?是的,Windows Phone 8.1