9

C# 4.0 WPF 应用程序(参见下面的代码)在启动时显示:

<code>ListBox</code>中的初始顺序

使用单击事件处理程序 单击排序按钮后的 abd :btnSort_Click()

排序后的列表框

如何按aaa,bbb,ccc的顺序排序?

C#代码:

public MainWindow()
{
  InitializeComponent();

  listBox1.Items.Add("ccc");
  listBox1.Items.Add("aaa");
  listBox1.Items.Add("bbb");
}
private void btnSort_Click(object sender, RoutedEventArgs e)
{
  listBox1.Items.SortDescriptions.Add(
  new System.ComponentModel.SortDescription("Content",
       System.ComponentModel.ListSortDirection.Ascending));
}
private void listBox1_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
  listBox1.Items.RemoveAt
     (listBox1.Items.IndexOf(listBox1.SelectedItem));
}

XAML:

<Window x:Class="WpfApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <ListBox Height="100" HorizontalAlignment="Left" Margin="8,43,0,0" Name="listBox1" VerticalAlignment="Top" Width="120" MouseDoubleClick="listBox1_MouseDoubleClick" />
        <Button Content="Sort" Height="23" HorizontalAlignment="Left" Margin="140,94,0,0" Name="btnSort" VerticalAlignment="Top" Width="75" Click="btnSort_Click" />
    </Grid>
</Window>

更新:
好吧,我只是按照文章“排序 WPF 列表框项”

那么,我按属性“内容”排序的顺序是什么,该属性“内容”在哪里,我想知道(试图将其更改为任意“fff”而不是“内容”得到相同,如第二张截图,结果?

4

4 回答 4

27

由于您正在对字符串列表进行排序,因此不要指定属性名称(SortDescription 的第一个参数):

listBox1.Items.SortDescriptions.Add(
            new System.ComponentModel.SortDescription("",
            System.ComponentModel.ListSortDirection.Ascending));
于 2013-03-24T15:16:55.083 回答
6
YOULISTBOX.Items.SortDescriptions.Clear(); 
YOULISTBOX.Items.SortDescriptions.Add( new System.ComponentModel.SortDescription("NAME", System.ComponentModel.ListSortDirection.Ascending));

确保每次更新

于 2015-03-25T19:49:25.977 回答
5

对 wpf 组合框或列表框进行排序很容易 - 但请记住包含 Imports System.ComponentModel

要按字母顺序排序,只需

MylistBox.Items.SortDescriptions.Add(
    New SortDescription("", ListSortDirection.Ascending))

或者

MyComboBox.Items.SortDescriptions.Add(
    New SortDescription("", ListSortDirection.Ascending))
于 2014-03-26T12:01:58.883 回答
3

附加信息:

您排序的项目可能是 any DependencyProperty。因此,假设您有一个绑定到ListBox 控件ObservableCollection的自定义类。ItemsSource自定义类可以具有任意数量的依赖属性,您可以使用这些属性进行排序。您只需将依赖属性的名称(作为 a string)放入新SortDescription参数中。

向控件添加多个SortDescriptions 将进行多变量排序。

依赖属性可以表示任何类型的变量,而不仅仅是字符串。我有一个例子,我首先按 a 排序bool,然后按a 排序int,最后按DateTime.

于 2015-06-04T12:07:30.143 回答