您可以创建一个包装类,它接受项目本身和要排序的值。
public class ItemWrapper {
public TestItem Item { get; set; }
public int Value { get; set; }
public ItemWrapper(TestItem item)
{
Item = item;
Value = item.Order; // or any other property you want to track
}
}
然后用项目的包装类实例填充列表。
private void Button_Click(object sender, RoutedEventArgs e)
{
var wrappedItems = Items.Select(item => new ItemWrapper(item)).ToList();
然后进行冒泡排序并清除原始项目列表并将列表添加到其中
for (var i = wrappedItems.Count - 1; i >= 0; i--)
{
for (var j = 1; j <= i; j++)
{
// Compare the Order property of the TestItem within the ItemWrapper
if (wrappedItems[j - 1].Item.Order > wrappedItems[j].Item.Order)
{
// Swap the ItemWrapper objects
var temp = wrappedItems[j - 1];
wrappedItems[j - 1] = wrappedItems[j];
wrappedItems[j] = temp;
}
}
}
Items.Clear();
// Add the sorted items back to the original collection
foreach (var wrappedItem in wrappedItems)
{
Items.Add(wrappedItem.Item);
}
}