从StackPanel中删除除第一个以外的所有项目?

从StackPanel中删除除第一个以外的所有项目?

问题描述:

标题说明了一切 - 如何从堆栈面板中删除除第一个之外的所有项目? Clear()只是全部删除它们,在这种情况下不起作用。 RemoveAt()并没有真正的帮助。在任何给定时间没有设置在堆叠面板上的项目数量。从StackPanel中删除除第一个以外的所有项目?

+1

所以'而(TitlePanel.Children.Count> 1){TitlePanel.Children.RemoveAt(1); }' - 不适合你? – 2014-11-14 22:04:32

+0

很好,谢谢。 – Kevin 2014-11-16 19:08:29

panel.Children.RemoveRange(1, panel.Children.Count - 1); 

参见RemoveRange函数(MSDN)。

上面的代码将删除第二项计数所有的孩子 - 1(因为你想保持的第一个元素)。

对于Windows Phone 8的,你没有得到的功能,所以你需要做这样的事情:

//Reversed to avoid the collection mutation exception 
foreach (UIElement item in panel.Children.Skip(1).Reverse()) 
    panel.Remove(item); 

不作为“聪明”,但其短,和明显的你在做什么!

+0

WP4中不存在RemoveRange。 – Kevin 2014-11-14 21:59:36

+0

@Kevin我目前没有WP8设置进行测试,但我的编辑*应该*工作。 – BradleyDotNET 2014-11-14 22:04:47