现在我的应用程序读取带有纬度和经度节点(7k位置)的XML。使用滑块,用户可以选择要在地图上显示的节点。现在,每次ValueChanged执行以下代码时:
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);
}
有时应用程序冻结一秒钟,然后显示所有的Pushpins ..我怎样才能提升性能?
亲切的问候, 尼尔斯
答案 0 :(得分:3)
您应该使用MapItemsControl并将其ItemsSource属性绑定到数据项的ObservableCollection,而不是手动将图钉添加到MapLayer。
<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中的示例部分以及有关如何绑定到集合的链接。
答案 1 :(得分:0)
我认为您应该尝试使用自己的应用程序。执行在单独的线程中添加图钉的代码。
以下是一些资源:http://msdn.microsoft.com/en-us/library/dd460717.aspx
http://msdn.microsoft.com/en-us/library/dd235678.aspx
您将不得不处理无法从其他线程更新UI线程的事实。我知道你必须在WinForms中使用InvokeRequired,但我不知道WPF。