是否无法绑定经度和纬度?
<bm:Map x:Name="EventMap" MapType="Birdseye" ZoomLevel="5"
Credentials="xxxxxxxxxxxxxxxxxxxxxxxxxxxxx" Height="480" Width="550"
HorizontalAlignment="Left">
<bm:Map.Center>
<bm:Location Latitude="{Binding Latitude}"
Longitude="{Binding Longitude}"/>
</bm:Map.Center>
</bm:Map>
这是与纬度和经度绑定的Collection。
<CollectionViewSource
x:Name="itemsViewSource"
Source="{Binding EventItems}"
d:Source="{Binding EventItemGroups[0].EventItems, Source={d:DesignInstance Type=data:EventDataSource, IsDesignTimeCreatable=True}}"/>
我应该使用哪种数据类型?串?双人还是其他?
private string _longitude = string.Empty;
public string Longitude
{
get { return this._longitude; }
set { this.SetProperty(ref this._longitude, value); }
}
private string _latitude = string.Empty;
public string Latitude
{
get { return this._latitude; }
set { this.SetProperty(ref this._latitude, value); }
}
我相信(经度)“151.173248”,(纬度)“ - 33.840764”是悉尼的有效点,如果我没错的话。
因为我发现地图没有显示我绑定的纬度和经度。它似乎是没有任何位置的原始地图。最重要的是,经过几次编译后,它会弹出
未能分配到属性'Bing.Maps.Location.Longitude
任何想法都会发生吗?
答案 0 :(得分:0)
部分粘贴的代码有点令人困惑,我可能会很密集,但我不知道你使用的是CollectionViewSource
。你的经度和纬度属性看起来很可疑。根据{{3}},<bm:Map.Center>
会占用Location
个对象,而后者又会将经度和纬度视为双倍。我很确定默认情况下将源字符串属性绑定到目标double属性不起作用。您必须指定一个值转换器。在您的情况下,如果可能,只使用double作为经度和纬度属性:
private double _longitude = Double.NaN;
public double Longitude
{
get { return _longitude; }
set { SetProperty(ref _longitude, value); }
}
private double _latitude = Double.NaN;
public double Latitude
{
get { return _latitude; }
set { SetProperty(ref _latitude, value); }
}
我还注意到你的经度和纬度属性不是依赖属性,你似乎没有实现INotifyPropertyChanged
接口,除非你在SetProperty()里面这样做。请记住,作为一个结果,如果您随后更改代码中的经度或纬度属性,则<bm:Map.Center>
将不会更新,即使您可能认为这是因为数据绑定。