2012-03-27 8 views
1

Kann der Längen- und Breitengrad nicht gebunden werden?Bing-Karte Längengrad Breitengrad Datenbindung

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

Hier ist die Sammlung, die mit dem Längen- und Breitengrad verbinden.

<CollectionViewSource 
    x:Name="itemsViewSource" 
    Source="{Binding EventItems}" 
    d:Source="{Binding EventItemGroups[0].EventItems, Source={d:DesignInstance Type=data:EventDataSource, IsDesignTimeCreatable=True}}"/> 

Welche Art von Datentypen sollte ich verwenden? Schnur? Doppelt oder andere?

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

Ich glaube (Längengrad) „151,173248“ (Breitengrad) „-33,840764“ ein gültiger Punkt ist die Sydney ist, wenn ich nicht falsch bin.

Da ich festgestellt habe, dass die Karte nicht den Breitengrad und die Länge anzeigt, bin ich gebunden. Es scheint die Originalkarte ohne Ort zu sein. Am wichtigsten ist, nach wenigen Zeit der Kompilierung, es auszuwerfen

fehlgeschlagen Eigenschaft ‚Bing.Maps.Location.Longitude

Jede Idee, wat passieren zuweisen?

+0

Wo sind die Breiten- und Längengradwerte, von denen Sie zu binden versuchen, haben Sie daran gedacht, den richtigen DataContext für Ihr UI-Element zuzuweisen, das die Karte enthält? Wenn der DataContext richtig eingerichtet ist, sind Sie sicher, dass Ihre Breiten- und Längengradwerte gültig sind? –

+0

@BojinLi Danke für die Antwort. Hier ist die Info. –

Antwort

0

Ein Teil Ihres eingefügten Codes ist irgendwie verwirrend, ich könnte dicht sein, aber ich weiß nicht, wofür Sie die CollectionViewSource verwenden. Ihre Längen- und Breitengradeigenschaften erscheinen jedoch verdächtig. Gemäß der Reference Documentation, <bm:Map.Center> nimmt ein Location Objekt, die wiederum Länge und Breite als Doppel erwarten. Ich bin mir ziemlich sicher, dass das Binden einer Source-String-Eigenschaft an eine Target-Double-Eigenschaft standardmäßig nicht funktioniert. Sie müssen einen Wertkonverter angeben. In Ihrem Fall, verwenden Sie einfach doppelt für die Längen- und Breitengrad-Eigenschaften, wenn möglich:

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

Ich habe auch bemerkt, dass Ihre Länge und Breite Eigenschaften sind nicht Abhängigkeitseigenschaften, und Sie scheinen nicht die INotifyPropertyChanged Schnittstelle zu implementieren, Es sei denn, Sie tun dies innerhalb von SetProperty(). Denken Sie daran, dass Ihr <bm:Map.Center> nicht aktualisiert wird, wenn Sie anschließend die Längen- oder Breitengrad-Eigenschaft im Code ändern, obwohl Sie denken, dass dies aufgrund von Databinding der Fall wäre.

+0

Danke für die Antwort. Entschuldigung für den unordentlichen Code. Eigentlich verändere ich das ursprüngliche Beispiel. Außerdem habe ich die Lösung versucht, die du gegeben hast. Es scheint immer noch dasselbe><. Ich denke, ich ändere später meine Länge und Breite. Die Karte befindet sich auf einer anderen Seite. Ich möchte nur den Standort anzeigen, sobald ich in die Seite geladen habe. Also sollte kein Problem sein. >< –