2016-09-14 4 views
1

Так я добавить некоторые элементы управления картой, как этотНе удается получить доступ ко всем дочерним элементам?

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)); 


       } 

      } 

Теперь я хочу, чтобы удалить имена элементов «а» образуют элемент управления и я использую следующий код

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 раз. Как я могу решить эту проблему?

+2

петля назад. Когда вы удаляете элемент 1, чем элемент 2 становится 1, а элемент 3 становится 2 и так далее. Итак, теперь ваш цикл проверяет элемент 2, который больше не является оригиналом 2. – GuidoG

+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)); 
     } 
    } 
} 
Смежные вопросы