Из кода, который вы опубликовали, похоже, проблема в том, что ItemsSource для MapsItemsControl не привязан к коллекции данных.Он привязан к типу.
Хорошо, привязка данных на самом деле не работает, если вы не определите DataContext и т. Д. Здесь вы как бы смешиваете и подбираете парадигмы.Я думаю, что было бы неплохо изучить MVVM и привязку к данным в какой-то момент, но сейчас я думаю, что можно просто сделать быстрый и грязный подход.
самый простой способ заставить это работатьэто просто назначить ItemSource.
Для этого сначала назовите свой MapsItemControl, чтобы вы могли получить к нему доступ в codebheind.
<my:Map ZoomLevel="6" Height="500" HorizontalAlignment="Left" Margin="0,6,0,0" CopyrightVisibility="Collapsed" LogoVisibility="Collapsed" Name="Map" VerticalAlignment="Top" Width="456">
<my:MapItemsControl x:Name="RhysMapItems" ItemsSource="{Binding TransitVariables}" Height="494">
<my:MapItemsControl.ItemTemplate>
<DataTemplate>
<my:Pushpin Location="{Binding Location}" />
</DataTemplate>
</my:MapItemsControl.ItemTemplate>
</my:MapItemsControl>
Внутри строки загрузкизавершенный обработчик, вы должны быть в состоянии сделать это:
void busStops_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error != null)
return;
var busStopInfo = XDocument.Load("Content/BusStops2.xml");
var Transitresults = from root in busStopInfo.Descendants("Placemark")
let StoplocationE1 = root.Element("Point").Element("coordinates")
let nameE1 = root.Element("name")
select new TransitVariables
(StoplocationE1 == null ? null : StoplocationE1.Value,
nameE1 == null ? null : nameE1.Value);
// This should bind the itemsource properly
// Should use Dispatcher actually...see below
RhysMapItems.ItemsSource = Transitresults.ToList();
}
Теперь, единственное предостережение, заключающееся в том, что весьма вероятно, что ваш обработчик DownloadStringCompleted будет вызываться в потоке, отличном от потока пользовательского интерфейса.
В этом случае вам нужно использовать Dispatcher.BeginInvoke () для изменения свойства ItemSource.
this.RootVisual.Dispatcher.BeginInvoke( _=> { RhysMapItems.ItemsSource = Transitresults.ToList();});