Автоматически сортировать элементы 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
предметы должны выглядеть так:
- item1
- item2
- до 15.....
Однако в настоящее время это не в порядке 1,2,3,4... Вместо этого это в порядке, когда элемент добавляется.
Я хочу ListBox
элементы для сериализации автоматически. Как этого достичь?
1 ответ
Если вы хотите отсортировать список или массив перед сериализацией, вы можете использовать два разных решения.
Массивы имеют статический Array.Sort
метод, который сортирует элементы массива на месте (сортирует содержимое самого экземпляра).
Для списков и других коллекций вы можете использовать LINQ OrderBy
метод расширения.
var sortedList = list.OrderBy(
item => item.PropertyToOrderBy )
.ToList();
Обратите внимание, что оригинал list
остается нетронутым, результат ToList()
метод расширения является новым экземпляром.