我正在尝试使用Bing Map SDK和控件将地图添加到Windows 8商店应用。有了这套Xaml:
<Page.Resources>
<DataTemplate x:Key="LogoTemplate">
<m:Pushpin m:MapLayer.Position="{Binding Item2}" Text="{Binding Item1}"/>
</DataTemplate>
</Page.Resources>
...
<m:Map Credentials="{StaticResource BingMapsApiKey}" ZoomLevel="12" HomeRegion="US" Heading="2">
<m:MapItemsControl x:Name="ListOfItems"
ItemTemplate="{StaticResource LogoTemplate}"
ItemsSource="{Binding LocationList}">
</m:MapItemsControl>
</m:Map>
绑定到视图模型的此属性:
public IEnumerable<Tuple<string, Bing.Maps.Location>> LocationList
{
get
{
if (MapLocation != null)
{
return new List<Tuple<string, Bing.Maps.Location>>
{
new Tuple<string, Bing.Maps.Location>("1", new Bing.Maps.Location(MapLocation.lat, MapLocation.lng))
};
}
return Enumerable.Empty<Tuple<string, Bing.Maps.Location>>();
}
}
它始终与Bing地图中的COM组件中的E_FAIL HResult
不同。在调试器输出窗口中显示以下消息:
WinRT information: Failed to assign to property 'Bing.Maps.MapLayer.Position'
Lat和Long是有效积分。我很难过,看不出有什么不同的做法。这个interwebs关于Bing Maps控件的App Store版本的信息很少,所以我希望有人能让它工作。
答案 0 :(得分:0)
以防其他人遇到此问题(或者在将此控件的Windows商店版本集成到MVVM模型时遇到困难),看起来解决方案是将控件包装在可绑定版本中。到目前为止,我使用this code form codeplex取得了一些成功。
答案 1 :(得分:0)
根本无法将MapLayer.Position
数据绑定到Location
对象,但您可以数据绑定Latitude
和Longitude
:
<m:Pushpin Text="{Binding Item1}"/>
<m:MapLayer.Position>
<m:Location Latitude="{Binding Item2.Latitude}" Longitude="{Binding Item2.Longitude}" />
</m:MapLayer.Position>
</m:Pushpin>