Ich habe eine echte Kopfschmerzen Bindung meiner Artikel zu Pins auf einer Silverlight Bing Karte.Bing Karten Binding Problem
Ich habe den ganzen Tag damit verbracht, meine Sammlung sortiert zu bekommen, und jetzt können die Drucknadeln einfach nicht mehr angezeigt werden.
Die Elemente erscheinen, dort zu sein, als wenn Sie einen Haltepunkt in der letzten Zeile zu tun als je das Bild unten, alle 143 Artikel gibt es in _PushPins:
Jede Hilfe willkommen. Danke vielmals. Hier
ist der Code:
namespace observable_collection_test
{
public partial class Map : PhoneApplicationPage
{
public Map()
{
InitializeComponent();
GetItems();
}
private ObservableCollection<SItem2> pushPins;
public ObservableCollection<SItem2> PushPins
{
get { return this.pushPins; }
set
{
this.pushPins = value;
this.OnPropertyChanged("PushPins");
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
public void GetItems()
{
var document = XDocument.Load("ListSmall.xml");
if (document.Root == null)
return;
var xmlns = XNamespace.Get("http://www.blah");
var events = from ev in document.Descendants("item")
select new
{
Latitude = Convert.ToDouble(ev.Element(xmlns + "Point").Element(xmlns + "lat").Value),
Longitude = Convert.ToDouble(ev.Element(xmlns + "Point").Element(xmlns + "long").Value),
};
this.PushPins = new ObservableCollection<SItem2>();
foreach (var ev in events)
{
var pushPin = new SItem2(ev.Latitude, ev.Longitude);
//Location = new GeoCoordinate(ev.Latitude, ev.Longitude)
this.PushPins.Add(pushPin);
}
}
Andere Klasse:
namespace observable_collection_test
{
public class SItem2
{
public double Latitude
{ get; set; }
public double Longitude
{ get; set; }
public SItem2(double Latitude, double Longitude)
{
this.Latitude = Latitude;
this.Longitude = Longitude;
}
public Location Location { get; set; }
}
}
XAML:
<my:Map ZoomBarVisibility="Visible" ZoomLevel="10" CredentialsProvider="xxxxx" Height="508" HorizontalAlignment="Left" Margin="0,22,0,0" Name="map1" VerticalAlignment="Top" Width="456" ScaleVisibility="Visible">
<my:MapItemsControl ItemsSource="{Binding PushPins}" >
<my:MapItemsControl.ItemTemplate>
<DataTemplate>
<my:Pushpin Background="Aqua" Location="{Binding Location}" ManipulationCompleted="pin_click">
</my:Pushpin></DataTemplate>
</my:MapItemsControl.ItemTemplate>
</my:MapItemsControl>
</my:Map>
Danke für Ihre Antwort Martin. Ich habe meinen Code und mein Image auf das Problem geändert. Immer noch keine Freude. Brauche ich eine Art von Get-Set-Accessor für die öffentliche ObservableCollection PushPins? –
Ja, Sie können nur an Eigenschaften binden, nicht an Felder. Außerdem verweist Ihr XAML immer noch auf _PushPins. – devdigital
Ahh, die XAML verwenden, war ein Fehler beim Herumspielen. Schülerfehler. Ich bin nicht ganz sicher, was ich mit dem get/set Accessor dort mache, ich habe es bearbeitet, und natürlich noch keine Freude :(Ich bin sicher, es ist offensichtlich für einen Experten, was hier falsch ist :-) –