-2

wpf の listboxitem の sSelected プロパティですべての項目を並べ替える必要があります。どうやってやるの?

4

1 に答える 1

0

あなたのアイテムが何であるか不明なので、整数を使用します。ユーザーが項目を選択し、ボタンを押すと並べ替えが開始され、選択された項目が並べ替えられてリストの先頭に配置され、選択されていない項目が新しく並べ替えられた項目の後に追加されるという考え方です。

Xaml:

<StackPanel Orientation="Vertical">
    <ListBox Name="lbData" SelectionMode="Multiple"/>
    <Button Click="Button_Click" Height="20"/>
</StackPanel>

C# コードビハインド

public MainWindow()
{
    InitializeComponent();

    lbData.ItemsSource = new List<int> {1, 7, 2, 4, 10};

}

private void Button_Click(object sender, RoutedEventArgs e)
{
    var selected = lbData.SelectedItems
                         .OfType<int>()
                         .ToList();
    if (selected.Any())
    {
        // Remove the items
        var diff = lbData.ItemsSource
                         .OfType<int>()
                         .Except(selected);

        // Sort the selected and place them at the beginning
        var ordered = selected.OrderBy(itm => itm).ToList();

        ordered.AddRange(diff);

        lbData.ItemsSource = ordered;
    }
}
于 2013-10-14T18:59:29.647 に答える