为什么不使用 ListBox/ItemsSontrol 并在其上使用 CollectionViewSorce/SortDescription 来完成这项工作。将元素添加到像 stackpanel 这样的 LayOut 面板并不是 WPF 应用程序的有效方式。垂直方向的 StackPanel 是 ListBox/ItemsControl 的默认设置,但如果你想要一些不同的布局,你总是可以覆盖 ListBox.ItemsPanel 模板
如果您可以遵循MVVM方法,那么只需在 ViewModel 类中指定一个属性(在您的情况下它将是Index)并在 listBox 级别设置 SortDescription 将自动为您提供此功能。无需添加和删除实际的 UIElement,您只需添加/删除绑定到 ListBox.ItemsSource 的 ObservableCollection。并指定适当的 DataTemplate。
如果您不熟悉 CollectionViewSource,请检查此 - http://msdn.microsoft.com/en-us/library/system.windows.data.collectionviewsource.sortdescriptions.aspx
并且代码将更像下面......它非常简单。
<UserControl.Resources>
<CollectionViewSource x:Key="sourceCollection" Source="{Binding YourObservableCollectionProperty}">
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="YourProperty-Index"/>
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
</UserControl.Resources>
<ItemsControl ItemsSource="{Binding Source={StaticResource sourceCollection}}"/>
注意:<--xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase"-->