ListBox / ItemsSontrolを使用し、CollectionViewSorce/SortDescriptionを使用してこの作業を実行しないのはなぜですか。stackpanelなどの要素をLayOutPanelに追加することは、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"->