Удалить все элементы, кроме первого, из StackPanel?

1

В заголовке указано все - как удалить все элементы, кроме первого, из панели стека? Clear() просто удалить их все и не будет работать в этом случае. RemoveAt() действительно не помогает. Нет определенного количества элементов, которые будут в стеке панели в любой момент времени.

  • 1
    поэтому while(TitlePanel.Children.Count > 1){ TitlePanel.Children.RemoveAt(1); } - не подойдет?
  • 0
    Отлично работает, спасибо.
Теги:
windows-phone
windows-phone-8

1 ответ

2
Лучший ответ
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);

Не как "умный", а короткий, и очевидный, что вы делаете!

  • 0
    RemoveRange не существует в WP8.
  • 0
    @Kevin В данный момент у меня нет настройки WP8 для тестирования, но мои изменения должны работать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню