Bing映射MapItemsControl抛出E_FAIL异常设置图钉位置

时间:2012-11-15 03:22:44

标签: data-binding windows-store-apps bing-maps

我正在尝试使用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版本的信息很少,所以我希望有人能让它工作。

2 个答案:

答案 0 :(得分:0)

以防其他人遇到此问题(或者在将此控件的Windows商店版本集成到MVVM模型时遇到困难),看起来解决方案是将控件包装在可绑定版本中。到目前为止,我使用this code form codeplex取得了一些成功。

答案 1 :(得分:0)

根本无法将MapLayer.Position数据绑定到Location对象,但您可以数据绑定LatitudeLongitude

<m:Pushpin Text="{Binding Item1}"/>
    <m:MapLayer.Position>
        <m:Location Latitude="{Binding Item2.Latitude}" Longitude="{Binding Item2.Longitude}" />
    </m:MapLayer.Position>
</m:Pushpin>