2012-11-22 161 views
0

現在我的應用程序讀取一個帶有緯度和經度節點(7k位置)的XML。滑塊用戶可以選擇他想要在地圖上顯示的節點。現在,每次該對的ValueChanged下面的代碼將執行:如何在將新圖釘添加到Bing地圖時提高WPF應用程序的性能?

foreach (HueDataClass dataClass in plotThumbList) 
{ 
    Pushpin Lamp = new Pushpin();     
    Lamp.Location = new Microsoft.Maps.MapControl.WPF.Location(dataClass.Lat, dataClass.Lon); 
    hueMap.Children.Add(Lamp); 
} 

有時申請凍結了一秒鐘,然後顯示所有的圖釘...我怎麼能提高性能?

親切的問候, 尼爾斯

回答

3

您應該使用MapItemsControl而不是手動將圖釘添加到MapLayer,並將其ItemsSource屬性綁定到數據項的ObservableCollection

<Window.Resources> 
    <DataTemplate x:Key="MapItemDataTemplate"> 
     <m:Pushpin Location="{Binding ...}" ... /> 
    </DataTemplate> 
    <local:DataItemsCollection x:Key="DataItems"/> 
</Window.Resources> 
<m:Map ... > 
    <map:MapItemsControl 
     ItemTemplate="{StaticResource MapItemDataTemplate}" 
     ItemsSource="{Binding Source={StaticResource DataItems}}"/> 
</m:Map> 

另請參閱ItemsSource中的示例部分,以及鏈接,瞭解如何綁定到集合。

+0

我似乎無法弄清楚。這是我現在的代碼: Pushpin Lamp = new Pushpin(); Lamp.Name =「_」+ dataClass.ID; Lamp.Location = new Location(dataClass.Lat,dataClass.Lon); Lamp.MouseEnter + = new MouseEventHandler(Lamp_MouseEnter); Lamp.MouseLeave + = new MouseEventHandler(Lamp_MouseLeave); Lamp.Template =(ControlTemplate)this.FindResource(「PinTemplate」); XAML: <本地:MyTileLayer UriFormat =「文件: /// C:/ Users // tiles {z} - {x} - {y} .png「/> – Niels

+0

@Niels對不起,作爲評論無法閱讀。考慮編輯你的問題。 – Clemens

+0

謝謝,使用MapItemsControl代替Map.Children.Add顯着提高了性能 – epsi1on