Wpf 无法访问元素的所有子元素?
因此,我将向贴图控件添加一些元素,如下所示Wpf 无法访问元素的所有子元素?,wpf,windows-phone-8.1,windows-phone,Wpf,Windows Phone 8.1,Windows Phone,因此,我将向贴图控件添加一些元素,如下所示 foreach (var res in results) { if (res.geometry.location != null) { var pushpin = new Image(); pushpin.Name = "a"; BasicG
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));
}
}
}
int c=myMap.Children.Count;
对于(int i=0;i
但总是有一些元素没有被删除,例如子元素的计数是21,但循环只循环了10次。
我怎样才能解决这个问题 尝试反向循环,这样你就不会在循环过程中弄乱你的收藏
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));
}
}
}
向后循环。删除元素1时,元素2变为1,元素3变为2,依此类推。所以现在你的循环测试元素2,它不再是原来的2。请使用正确的标记。这个问题肯定与当前的所有标签无关。