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或其他東西。 (或者我可能只是想念完全明顯的東西^^)
你可以顯示你的OnPropertyChanged()方法嗎? 通常,當您提出該方法時,您將公共屬性名稱傳遞給該方法 –
我更新了它,我使用調試器將其更改爲正確的名稱。 – Qowy
你有什麼改變datacontext? –