В заголовке указано все - как удалить все элементы, кроме первого, из панели стека? Clear() просто удалить их все и не будет работать в этом случае. RemoveAt() действительно не помогает. Нет определенного количества элементов, которые будут в стеке панели в любой момент времени.
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);
Не как "умный", а короткий, и очевидный, что вы делаете!
while(TitlePanel.Children.Count > 1){ TitlePanel.Children.RemoveAt(1); }
- не подойдет?