2010-11-29 36 views
1

J'ai un problème avec une collection que j'ai liée. J'ai un bouton de rafraîchissement manuel qui tire quelques punaises en mouvement du serveur. Le serveur déplace les broches lui-même. Après le traitement, je supprime la collection existante et je l'ajoute à la collection Observable. Ce code fonctionne et j'ai vérifié que le contenu a été mis à jour mais les pins ne "mettent à jour" que (se déplacer sur la carte) si un zoom ou un mouvement de la carte est arrivé!ObservableCollection mise à jour uniquement sur les événements Map Zoom et Move qui ne sont pas ajoutés à Collection!

Ma classe est la suivante ...

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

    } 

Et il est lié à l'aide de ce qui suit ...

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

Répondre

0

Après avoir parlé avec Microsoft, il semble que l'appareil URL la mémoire cache et que est en fait mon problème! Obligatoire non-cache côté serveur et problème résolu!