Автоматически сортировать элементы ListBox (от A до Z или от 1 до 9 по порядку)

У меня есть ListBox в моем приложении WP 8.1 Silverlight, которое выглядит следующим образом:

<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 элементы для сериализации автоматически. Как этого достичь?

1 ответ

Решение

Если вы хотите отсортировать список или массив перед сериализацией, вы можете использовать два разных решения.

Массивы имеют статический Array.Sort метод, который сортирует элементы массива на месте (сортирует содержимое самого экземпляра).

Для списков и других коллекций вы можете использовать LINQ OrderBy метод расширения.

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

Обратите внимание, что оригинал list остается нетронутым, результат ToList() метод расширения является новым экземпляром.

Другие вопросы по тегам