无法访问所有元素的孩子?

时间:2016-09-14 06:32:56

标签: wpf windows-phone-8.1 windows-phone

所以我将一些元素添加到这样的地图控件中

  foreach (var res in results)
            {
                if (res.geometry.location != null)
                {
                    var pushpin = new Image();
                    pushpin.Name = "a";
                     BasicGeoposition bs = new BasicGeoposition { Latitude = res.geometry.location.lat, Longitude = res.geometry.location.lng };
                    pushpin.Source = new BitmapImage(uri);
                    pushpin.Height = 50;
                    pushpin.Width = 50;
                    myMap.Children.Add(pushpin);
                    MapControl.SetLocation(pushpin, new Geopoint(bs));


                }

            }

现在我要删除元素名称" a"形成控件,我正在使用以下代码

    int c = myMap.Children.Count;
            for (int i = 0; i < c; i++)
            {

                if(myMap.Children.ElementAt(i) is Image)
                {
                    var z = myMap.Children.ElementAt(i) as Image;
                    if(z.Name.Equals("a"))
                        {
                        myMap.Children.Remove(myMap.Children.ElementAt(i));
                    }


                }


            }

但是总是有些元素没有被删除,例如,子项的数量是21,但循环只循环了10次。 我怎么解决这个问题?

1 个答案:

答案 0 :(得分:2)

尝试向后循环,这样你就不会在循环中弄乱你的收藏。

int c = myMap.Children.Count - 1;
for (int i = c; i >= 0; i--)
{
    if (myMap.Children.ElementAt(i) is Image)
    {
        var z = myMap.Children.ElementAt(i) as Image;
        if(z.Name.Equals("a"))
        {
            myMap.Children.Remove(myMap.Children.ElementAt(i));
        }
    }
}