具有最小约束的 NumberBox 的 ListView 在订购时会损坏值

问题描述 投票:0回答:1
c# listview winui-3
1个回答
0
投票

您可以创建一个包装类,它接受项目本身和要排序的值。

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);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.