Автоматическая сортировка элементов ListBox (от А до Я или от 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. пункт1
  2. пункт2
  3. to 15.....

Однако в настоящее время это не в порядке 1,2,3,4... Вместо этого это порядок добавления элемента.

Я хочу, чтобы элементы ListBox сериализовались автоматически. Как этого добиться?


person Shubham Sahu    schedule 22.11.2016    source источник


Ответы (1)


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

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

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

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

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

person Martin Zikmund    schedule 22.11.2016
comment
можете ли вы предоставить информацию о руде - person Shubham Sahu; 22.11.2016
comment
я работаю со списком впервые, поэтому, пожалуйста, подробно опишите, как это сделать - person Shubham Sahu; 22.11.2016
comment
В основном это не связано с самим списком, потому что вам нужно сортировать данные, которые отображаются в списке. Код, который я разместил, вы можете использовать перед сериализацией данных, чтобы они хранились в файле в отсортированном порядке. И если вы поместите данные из sortedList в список, они также будут отсортированы в пользовательском интерфейсе. - person Martin Zikmund; 24.11.2016
comment
список - имя «список» не существует в текущем контексте - person Shubham Sahu; 26.11.2016
comment
Список — это просто имя переменной, содержащей ваши данные. Если вы разместите код, я могу сказать вам, какой из них правильный - person Martin Zikmund; 26.11.2016
comment
stackoverflow.com/questions/40627267 / этот вопрос содержит весь код, относящийся к списку - person Shubham Sahu; 26.11.2016
comment
В этом случае просто замените list на listobj :-) - person Martin Zikmund; 26.11.2016
comment
на этих двух изображениях отображается ошибка 1drv.ms/f/s!Ahppl6XCmlXfkaRTpGSXsMSRn8rjkA - person Shubham Sahu; 26.11.2016
comment
Да, вам также нужно заменить PropertyToOrderBy на AnswerName - person Martin Zikmund; 26.11.2016
comment
Вы должны использовать переменную sortedList - или вы можете просто заменить var sortedList на listobj в моем коде - person Martin Zikmund; 26.11.2016
comment
Мне нужно будет снова увидеть снимки экрана с сообщением об ошибке - person Martin Zikmund; 26.11.2016
comment
Я не понимаю, мы не изменили ничего, что касается фаворитов. Видимо нужно пометить поле _favorites как статическое, но я не понимаю, как это могло работать раньше - person Martin Zikmund; 26.11.2016
comment
Если бы вы могли обновить свой вопрос или опубликовать новый вопрос со всем кодом, который у вас сейчас есть, это помогло бы, иначе я действительно не понимаю, что происходит... :-( - person Martin Zikmund; 26.11.2016
comment
хорошо, я тоже очень смущен, я отправлю новый вопрос .. : |! , Спасибо, что уделили время моему вопросу - person Shubham Sahu; 26.11.2016