C# Windows Phone 8映射、数据绑定映射模式只工作一次

C# Windows Phone 8映射、数据绑定映射模式只工作一次,c#,xaml,data-binding,windows-phone-8,C#,Xaml,Data Binding,Windows Phone 8,我有一个具有以下属性的模型: /// <summary> /// List of available map modes /// </summary> public Array MapModes { get; private set; } /// <summary> /// The current cartographic mode of the map /// </summary>

我有一个具有以下属性的模型:

    /// <summary>
    /// List of available map modes
    /// </summary>
    public Array MapModes { get; private set; } 

    /// <summary>
    /// The current cartographic mode of the map
    /// </summary>
    public MapCartographicMode MapMode
    {
        get { return _mapMode; }
        set
        {
            if (value == _mapMode) return;
            _mapMode = value;
            OnPropertyChanged();
        }
    }

    /// <summary>
    /// List of available map color modes
    /// </summary>
    public Array MapColorModes { get; private set; }

    //The current color mode of the map
    public MapColorMode MapColorMode
    {
        get { return _mapColorMode; }
        set
        {
            if (value == _mapColorMode) return;
            _mapColorMode = value;
            OnPropertyChanged();
        }
    }

    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
            handler(this, new PropertyChangedEventArgs(propertyName));
    }
这很有效。我开始认为WP8MAP实现中有一个bug或其他东西。(或者我可能只是错过了一些非常明显的事情)

我也有同样的经历。 解决方案是为绑定提供Mode=TwoWay。我不知道为什么会这样,但似乎是这样。 在这个博客上,我看到了这个解决方案: 我也吃了同样的。 解决方案是为绑定提供Mode=TwoWay。我不知道为什么会这样,但似乎是这样。 在这个博客上,我看到了这个解决方案:

能否显示OnPropertyChanged()方法?通常,当您提出该方法时,您会将公共属性名称传递到该方法中。我更新了该方法,并使用了正确名称的调试器对其进行了检查。您是否有任何更改datacontext的内容?据我所知,除了显式datacontext=。。。在代码背后?有趣的是,在调试OnPropertyChanged()时,我注意到处理程序变量的“InvocationCount”属性在第一次更新后减少了1。因此,它似乎真的将自己从数据绑定oo中移除,而且只有在成功更新时才会这样做。例如,在将道路更改为地形时,将明暗转换后,此操作失败(现在不知道为什么)->地图上没有更改。但调用计数并没有减少。然后,如果我将其更改为例如Aeror,它将工作,地图将更新,调用计数将减少。而且没有进一步的更新了。您能展示一下您的OnPropertyChanged()方法吗?通常,当您提出该方法时,您会将公共属性名称传递到该方法中。我更新了该方法,并使用了正确名称的调试器对其进行了检查。您是否有任何更改datacontext的内容?据我所知,除了显式datacontext=。。。在代码背后?有趣的是,在调试OnPropertyChanged()时,我注意到处理程序变量的“InvocationCount”属性在第一次更新后减少了1。因此,它似乎真的将自己从数据绑定oo中移除,而且只有在成功更新时才会这样做。例如,在将道路更改为地形时,将明暗转换后,此操作失败(现在不知道为什么)->地图上没有更改。但调用计数并没有减少。然后,如果我将其更改为例如Aeror,它将工作,地图将更新,调用计数将减少。没有进一步的更新会起作用
 <maps:Map x:Name="MainMap"
                                  Height="{Binding MapHeight}"
                                  ColorMode="{Binding MapColorMode, Converter={StaticResource MapTestConverter}}">
<toolkit:ListPicker Header="Map mode"
                                    ItemsSource="{Binding MapModes}"
                                    SelectedItem="{Binding Path=MapMode, Mode=TwoWay}"/>
                <toolkit:ListPicker Header="Map color mode"
                                    ItemsSource="{Binding MapColorModes}"
                                    SelectedItem="{Binding Path=MapColorMode, Mode=TwoWay}"/>
        Binding b = new Binding("MapMode");
        BindingOperations.SetBinding(MainMap, Map.CartographicModeProperty, b);