2013-07-05 84 views
1

我有特性的模型:的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> 
    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)); 
    } 

和我的XAML看起來像這樣:

<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}"/> 

現在,ListPickers的綁定工作正常,模型中的值總是表示上次在這裏選擇的內容。

地圖綁定也起作用,它獲取初始值並且也在第一次更新屬性時進行更新。

但就是這樣。第一個屬性更改後拒絕更新。 (虛擬IValueConverter未被調用)。

模型仍然很好地引發屬性更改事件,並且屬性模型具有正確的值(在頁面加載手動分配它例如完美的作品)

因爲它似乎綁定越來越「破」我嘗試重新創建它,每次財產更新

 Binding b = new Binding("MapMode"); 
     BindingOperations.SetBinding(MainMap, Map.CartographicModeProperty, b); 

這項工程。我開始認爲wp8地圖實現中存在一個bug或其他東西。 (或者我可能只是想念完全明顯的東西^^)

+0

你可以顯示你的OnPropertyChanged()方法嗎? 通常,當您提出該方法時,您將公共屬性名稱傳遞給該方法 –

+0

我更新了它,我使用調試器將其更改爲正確的名稱。 – Qowy

+0

你有什麼改變datacontext? –

回答