Привязка данных широты карты Bing - PullRequest
1 голос
/ 27 марта 2012

Не может ли он связать долготу и широту?

<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>

Вот коллекция, которая связывает широту и долготу.

<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 голосов
/ 28 марта 2012

Часть вашего вставленного кода сбивает с толку, я мог бы быть дураком, но я не знаю, для чего вы используете CollectionViewSource.Ваши свойства долготы и широты кажутся подозрительными.Согласно справочной документации , <bm:Map.Center> принимает объект Location, который, в свою очередь, ожидает, что долгота и широта удваиваются.Я совершенно уверен, что привязка свойства строки источника к целевому двойному свойству не будет работать по умолчанию.Вам нужно будет указать конвертер значений.В вашем случае просто используйте 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> не будет обновляться, если вы впоследствии измените свойство Longitude или Latitude в коде, даже если вы думаете, что это произойдет из-запривязки данных.

...