自动排序 ListBox 项目(A 到 Z 或 1 到 9 串行)

Automatically Sort ListBox Items (A to Z or 1 to 9 serial wise)

我的 WP 8.1 Silverlight 应用程序中有一个 ListBox,如下所示:

<StackPanel Grid.Column="1" Grid.Row="0" HorizontalAlignment="Center" VerticalAlignment="Top">                
    <ListBox x:Name="FavoriteListBox" Visibility="Collapsed" 
             SelectionChanged="FavoriteListBox_SelectionChanged"
             HorizontalAlignment="Stretch"
             VerticalAlignment="Top" Opacity="1"
             Background="{StaticResource PhoneBackgroundBrush}" Foreground="{StaticResource PhoneForegroundBrush}"
             Height="300" Width="250">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <TextBlock Visibility="Visible" x:Name="FavoriteListBoxTextBlock"  
                       FontSize="35" Foreground="Black" Text="{Binding AnswerName}"/>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</StackPanel>

在我的 ListBox 中,项目应该如下所示:

  1. item1
  2. item2
  3. 至 15.......

但是目前它不是按照 1,2,3,4... 的顺序排列的,而是按照添加项目时的顺序排列的。

我希望 ListBox 项自动序列化。如何实现?

如果要在序列化之前对列表或数组进行排序,可以使用两种不同的解决方案。

数组有一个静态的 Array.Sort 方法,可以就地对数组的项目进行排序(对实例本身的内容进行排序)。

对于列表和其他集合,您可以使用 LINQ 的 OrderBy 扩展方法。

var sortedList = list.OrderBy( 
    item => item.PropertyToOrderBy )
    .ToList();

请注意,原始 list 保持不变,ToList() 扩展方法的结果是一个新实例。