Обновление ObservableCollection только для событий Map Zoom и Move, не добавляемых в Collection! - PullRequest
1 голос
/ 29 ноября 2010

У меня есть проблема с коллекцией, которую я связал. У меня есть кнопка ручного обновления, которая вытягивает некоторые движущиеся кнопки с сервера. Сервер сам перемещает контакты. После обработки я удаляю существующую коллекцию и снова добавляю ее в коллекцию Observable. Этот код работает, и я проверил, что содержимое обновлено, однако контакты только «обновляются» (перемещаются по карте), если произошло масштабирование или перемещение карты!

Мой класс выглядит следующим образом ...

public class MapData : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        private void RaisedPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }

        private GeoCoordinate mapCenter = new GeoCoordinate(50, -1);

        public GeoCoordinate MapCenter
        {
            get { return this.mapCenter; }
            set
            {
                if (this.mapCenter == value) return;
                this.mapCenter = value;
                this.RaisedPropertyChanged("MapCenter");
            }
        }

        private double zoom = 7.0;
        public double Zoom
        {
            get { return this.zoom; }
            set
            {
                if (this.zoom == value) return;
                this.zoom = value;
                this.RaisedPropertyChanged("Zoom");
            }
        }

        public ObservableCollection<Plane> pins = new ObservableCollection<Plane>() { 

        };

        public ObservableCollection<Plane> Pins
        {
            get { return pins; }
        }

        public void RemovePoints()
        {
            for (int i = 0; i < pins.Count; i++)
            {
                pins.RemoveAt(i);
            }
            pins.Clear();
            this.RaisedPropertyChanged("Location");
        }

       public void AddPoints(List<Plane> Planelist)
        {

            for (int i = 0; i < Planelist.Count; i++) 
            {
                pins.Add(Planelist[i]);
            }

        }



        private Plane selectedPin;
        public Plane SelectedPin
        {
            get {
                return this.selectedPin;
            }
            set
            {
                if (this.selectedPin == value) return;
                this.selectedPin = value;
                this.RaisedPropertyChanged("SelectedPin");

            }
        }

        private LocationCollection routePoints = new LocationCollection();
        public LocationCollection RoutePoints
        {
            get { return routePoints; }
        }

    }

И это связано с использованием следующего ...

<my:MapItemsControl ItemsSource="{Binding Pins}" ItemTemplate="{StaticResource PushedMe}"/>

1 Ответ

0 голосов
/ 01 декабря 2010

После разговора с Microsoft кажется, что устройство будет кешировать URL, и это на самом деле моя проблема! Принудительное отсутствие кэширования на стороне сервера и исправление проблемы!

...