【问题标题】:Automatically Sort ListBox Items (A to Z or 1 to 9 serial wise)自动排序列表框项目(A 到 Z 或 1 到 9 连续)
【发布时间】:2017-04-05 19:24:32
【问题描述】:

我的 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. 项目1
  2. 项目2
  3. 到 15 .....

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

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

【问题讨论】:

    标签: c# sorting windows-phone-8.1 listboxitems windows-phone-silverlight


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 能否提供矿石详情
    • 我是第一次使用列表框,所以请提供详细信息,如何做到这一点
    • 基本上它与列表框本身无关,因为您必须对列表框中显示的数据进行排序。我发布的代码可以在序列化数据之前使用,以便它们按排序顺序存储在文件中。如果将 sortedList 中的数据放入列表框中,它们也会在 UI 中进行排序。
    • list - 当前上下文中不存在名称“list”
    • List 只是包含您数据的变量的名称。如果您发布代码,我可以告诉您哪个是正确的
    猜你喜欢
    • 2013-06-09
    • 2021-10-06
    • 1970-01-01
    • 2011-06-29
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多