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リストボックスアイテムの並べ替え」の記事に従いました

それで、私がプロパティ「Content」でソートしている順序は何ですか、そしてそのプロパティ「Content」はどこにあるのでしょうか(「Content」が同じになるのではなく、任意の「fff」に変更しようとしました) 2番目のスクリーンショット、結果?

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コンボボックスまたはリストボックスを並べ替えるのは簡単ですが、インポートを含めることを忘れないで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

追加情報:

並べ替えるアイテムはどれでもかまいませんDependencyProperty。したがって、ListBoxコントロールObservableCollectionのにバインドされているカスタムクラスのを持っているとしましょう。ItemsSourceカスタムクラスには任意の数の依存関係プロパティを含めることができ、それらを並べ替えに使用できます。依存関係プロパティの名前を(としてstring)新しいSortDescription引数に入れるだけです。

コントロールに複数のsを追加するSortDescriptionと、多変数ソートが実行されます。

依存関係プロパティは、文字列だけでなく、任意のタイプの変数を表すことができます。bool最初に、、次にint、、最後に。で並べ替える例がありDateTimeます。

于 2015-06-04T12:07:30.143 に答える