【问题标题】:Remove all items other then the first one from a StackPanel?从 StackPanel 中删除除第一个项目以外的所有项目?
【发布时间】:2014-11-14 21:53:55
【问题描述】:

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

【问题讨论】:

  • 所以while(TitlePanel.Children.Count > 1){ TitlePanel.Children.RemoveAt(1); } -- 不适合你吗?
  • 效果很好,谢谢。

标签: c# windows windows-phone-8 windows-phone


【解决方案1】:
panel.Children.RemoveRange(1, panel.Children.Count - 1);

请参阅RemoveRange 函数 (MSDN)。

上面的代码将所有子元素从第二个元素中移除到count - 1(因为你想保留第一个元素)。

对于 Windows Phone 8,您无法获得该功能,因此您需要执行以下操作:

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

不像“聪明”,但它很短,很明显你在做什么!

【讨论】:

  • WP8 中不存在RemoveRange。
  • @Kevin 我目前没有要测试的 WP8 设置,但我的编辑应该可以工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-10
  • 1970-01-01
  • 1970-01-01
  • 2020-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多