BingMapControl WP7 XAML数据绑定中心

BingMapControl WP7 XAML数据绑定中心,xaml,data-binding,windows-phone-7,bing-maps,Xaml,Data Binding,Windows Phone 7,Bing Maps,我声明了以下XAML: <controls:PivotItem Header="map"> <my:Map x:Name="map" CredentialsProvider="Hidden" Mode="Road" Center="{Binding AppState.MapCenter}"

我声明了以下XAML:

       <controls:PivotItem Header="map">
            <my:Map x:Name="map"
                    CredentialsProvider="Hidden"
                    Mode="Road"
                    Center="{Binding AppState.MapCenter}"
                    ZoomLevel="15">
                <my:Pushpin Location="{Binding AppState.MapCenter}" />                        
            </my:Map>
        </controls:PivotItem>


绑定工作正常-除了贴图没有保持居中(最初它使用“中心”属性上的绑定正确居中)。该应用程序允许用户通过一系列具有不同地理坐标的记录进行移动。发生这种情况时,绑定的图钉会适当移动,但最终会从地图上移开,因为地图本身不会重新居中。如何使用数据绑定使地图重新居中?

在这个阶段,我发现的唯一解决方案是在每次地图点更改时以代码设置地图视图,如下所示:

map.SetView(ViewModelLocator.AppStateStatic.MapCenter, 15);

我希望它能与数据绑定一起工作。

我找到了第二种更好的解决方案,可以实现数据绑定。我将中心的绑定模式设置为双向:

Center="{Binding MapCenter, Mode=TwoWay}"
这意味着我不能直接绑定到我正在映射的记录上的地理坐标值(因为如果我通过平移移动地图中心,我不希望该值被更新)。相反,我必须在视图模型中有一个单独的属性来绑定,当用户滚动数据时,我使用所选记录中的所需地理坐标值不断更新该属性


奇怪的是,Center属性需要双向绑定,而图钉在没有双向绑定的情况下工作得很好。

尽管从文档中看不太清楚,但单向绑定的工作方式似乎就像地图中的一次性绑定一样。您为中心提供另一个读/写属性的解决方案帮助了我。