C# 如何从Bing地图中删除所有现有图钉?

C# 如何从Bing地图中删除所有现有图钉?,c#,winforms,wpf-controls,bing-maps,pushpin,C#,Winforms,Wpf Controls,Bing Maps,Pushpin,几年前,我使用了不同版本/风格的Bing地图,问了同样的问题,最终我自己发布了答案 但这不适用于使用WPF控件的Winforms应用程序。使用此代码: var mapLayerChildren = from c in DataLayer.Children select c; var kinderGarten = mapLayerChildren.ToArray(); for (int i = 0; i < kinderGarten.Count(); i++) { if (kinde

几年前,我使用了不同版本/风格的Bing地图,问了同样的问题,最终我自己发布了答案

但这不适用于使用WPF控件的Winforms应用程序。使用此代码:

var mapLayerChildren = from c in DataLayer.Children select c;
var kinderGarten = mapLayerChildren.ToArray();
for (int i = 0; i < kinderGarten.Count(); i++)
{
    if (kinderGarten[i] is Pushpin)
    {
        DataLayer.Children.Remove(kinderGarten[i]);
    }
}
var mapLayerChildren=来自数据层中的c。子对象选择c;
var幼稚园=mapLayerChildren.ToArray();
for(int i=0;i<幼稚园.Count();i++)
{
if(幼儿园[i]为图钉)
{
数据层.Children.Remove(幼儿园[i]);
}
}
…无法识别数据层

当我尝试用“userControl11.myMap.Children”替换“DataLayer”时,我得到了以下结果:


我需要做什么?

这取决于如何添加图钉。您需要将它们从已添加到的同一
子对象
集合中删除

假设您已将图钉直接添加到地图的
子对象
集合中,则可以找到所有图钉并按如下方式移除它们:

var map = this.userControl11.myMap;
map.Children.OfType<Pushpin>().ToList().ForEach(pin => {
    map.Children.Remove(pin);           
});

这取决于如何添加图钉。您需要将它们从已添加到的同一
子对象
集合中删除

假设您已将图钉直接添加到地图的
子对象
集合中,则可以找到所有图钉并按如下方式移除它们:

var map = this.userControl11.myMap;
map.Children.OfType<Pushpin>().ToList().ForEach(pin => {
    map.Children.Remove(pin);           
});