Bing Map经度纬度数据绑定

时间:2012-03-27 15:10:16

标签: c# xaml data-binding bing-maps

是否无法绑定经度和纬度?

<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

任何想法都会发生吗?

1 个答案:

答案 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>将不会更新,即使您可能认为这是因为数据绑定。