正如您所提到的,Location
andTitle
可以绑定到Geopoint
and AttractionName
。但是要在 MapControl 上显示 MapIcon,我们需要以编程方式将 MapIcon 添加到其 MapElements 集合中。
例如:
在. Loaded
_MapControl
private void MapControl_Loaded(object sender, RoutedEventArgs e)
{
MapControl.MapElements.Add(MyMapIcon);
}
在此之后,MapIcon
可以显示在MapControl
喜欢的图像上。但是你会发现左上角有一串类名MapControl
。
这是因为您添加MapIcon
了 MapControl 的隐式子项。相当于添加如下 XAML 代码MapIcon
。MapItemsControl
<Maps:MapControl x:Name="MapControl" ZoomLevel="14" Center="{Binding Geopoint, Mode=OneWay}" Margin="-12,0,-12,0" Height="200" PanInteractionMode="Disabled" RotateInteractionMode="Disabled" Loaded="MapControl_Loaded">
<Maps:MapItemsControl>
<Maps:MapIcon x:Name="MyMapIcon" Location="{Binding Geopoint}" Title="{Binding AttractionName}" />
</Maps:MapItemsControl>
</Maps:MapControl>
MapItemsControl 可以通过将 XAML 用户界面元素(例如 Button、HyperlinkButton 或 TextBlock)添加为 MapControl 的子项来显示它们。MapIcon 不能显示在 MapControl 上,所以它显示了它的类名。
作为一种解决方法,我们可以放入解决MapIcon
问题Resources
的方法。例如:
<Page.Resources>
<Maps:MapIcon x:Name="MyMapIcon" Location="{Binding Geopoint}" Title="{Binding AttractionName}" />
</Page.Resources>
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Maps:MapControl x:Name="MapControl" ZoomLevel="14" Center="{Binding Geopoint, Mode=OneWay}" Margin="-12,0,-12,0" Tapped="directions_Click" Height="200" MapServiceToken="{StaticResource BingMapsKey}" PanInteractionMode="Disabled" RotateInteractionMode="Disabled" Loaded="MapControl_Loaded">
</Maps:MapControl>
</Grid>