C# 双向绑定导致wp7的映射控件出现异常行为

C# 双向绑定导致wp7的映射控件出现异常行为,c#,data-binding,windows-phone-7,mvvm,bing-maps,C#,Data Binding,Windows Phone 7,Mvvm,Bing Maps,我正在使用“地图”控件为windows phone开发一个应用程序。贴图控件将其中心和zoomlevel属性绑定到viewmodel上的两个属性 映射控件位于与应用程序主页分开的页面上。每次用户移动到地图时,页面都会绑定到viewmodel。此viewmodel是一个单例(始终是同一个实例) 第一次移动到地图时,在地图上导航效果很好,但当我返回并再次导航到地图时,导航会出现某种反弹,就像被推回到初始位置一样。 要查看此行为,请执行以下操作: 单击主页上的按钮,导航到地图页面bij。此时,映射控

我正在使用“地图”控件为windows phone开发一个应用程序。贴图控件将其中心和zoomlevel属性绑定到viewmodel上的两个属性

映射控件位于与应用程序主页分开的页面上。每次用户移动到地图时,页面都会绑定到viewmodel。此viewmodel是一个单例(始终是同一个实例)

第一次移动到地图时,在地图上导航效果很好,但当我返回并再次导航到地图时,导航会出现某种反弹,就像被推回到初始位置一样。 要查看此行为,请执行以下操作:

  • 单击主页上的按钮,导航到地图页面bij。此时,映射控件按预期工作
  • 单击“上一步”按钮返回主页面
  • 再次单击主页面上的按钮以第二次导航到地图页面。现在,当滑动贴图时,控件会在滑动之前反弹回原始位置,从而表现出奇怪的行为
主页面仅包含一个按钮,用于导航到地图页面,如下所示:

<phone:PhoneApplicationPage 
    x:Class="MapTester.Map"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
    xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:maps="clr-namespace:Microsoft.Phone.Controls.Maps;assembly=Microsoft.Phone.Controls.Maps"
    FontFamily="{StaticResource PhoneFontFamilyNormal}"
    FontSize="{StaticResource PhoneFontSizeNormal}"
    Foreground="{StaticResource PhoneForegroundBrush}"
    SupportedOrientations="Portrait" Orientation="Portrait"
    mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480"
    shell:SystemTray.IsVisible="True"
    DataContext="{Binding Path=MapViewModel, Source={StaticResource ViewModelLocator}}">

    <!--LayoutRoot is the root grid where all page content is placed-->
    <Grid x:Name="LayoutRoot" Background="Transparent">
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>

        <maps:Map Center="{Binding Center, Mode=TwoWay}"
                  ZoomLevel="{Binding ZoomLevel,Mode=TwoWay}"
                  ZoomBarVisibility="Visible"
                  CredentialsProvider=""
                  ScaleVisibility="Visible"></maps:Map>
    </Grid>

</phone:PhoneApplicationPage>

MapViewModel是在ViewModelLocator上定义的。我创建了一个解决方案来演示这个问题。你可以在这里下载

有人知道如何解决这个问题吗


谢谢

我看不出这里出了什么问题?除非您正在向后导航(因此没有设置DataContext),否则Bing地图将始终执行从全局视图到中心位置的“反弹”动画。这就是控件的工作方式,因此您对此无能为力。

我不知道这里出了什么问题?除非您正在向后导航(因此没有设置DataContext),否则Bing地图将始终执行从全局视图到中心位置的“反弹”动画。这就是控件的工作方式,因此对此您无能为力。

也许我不清楚如何重现这种行为。我更新了我最初的帖子,介绍了如何重现这种奇怪行为的步骤。也许我不清楚如何重现这种行为。我更新了我的第一篇文章,介绍了如何重现这种奇怪行为的步骤。我也有同样的问题,你找到解决方法了吗?所以我认为我所做的是在导航离开时删除绑定。我也有同样的问题,您找到解决方案了吗JLaanstra?所以我认为我所做的是在导航时删除绑定。