gpt4 book ai didi

c# - 如何重新编号 ObservableCollection

转载 作者:太空宇宙 更新时间:2023-11-03 23:47:02 24 4
gpt4 key购买 nike

我将 ObservableCollection 与键/值 -> int(索引)和字符串绑定(bind)到 ItemsControl 中的文本框。

<TextBox Text="{Binding Path=Value , Mode=OneWay}" />

如果单击 ItemsControl 中的按钮,则可以删除集合中的项目。

private ObservableCollection<KeyValuePair<int, String>> testlist;

public ObservableCollection<KeyValuePair<int, String>> TestList
{
get { return testlist; }
set {
testlist = value;
NotifyPropertyChanged("TestList");
}
}

public void DeleteItem(int index)
{
TestList.RemoveAt(index);
}

现在我想重新编号集合的索引 (int) 例如:

  • 删除项目前的集合:0 - “aaa”,1 - “bbb”,2 - “ccc”,3 - “ddd”
  • 删除项目后的集合:0 - “aaa”,2 - “ccc”,3 - “ddd”
  • 重新编号后的集合:0 - "aaa",1 - "ccc",2 - "ddd"

我该怎么做?

最佳答案

在删除项目后转换一个新的 ObservableCollection:

Testlist.RemoveAt(1);
Testlist = new ObservableCollection<KeyValuePair<int, string>>(Testlist
.OrderBy(kvp => kvp.Key)
.Select((kvp, seq) => new KeyValuePair<int, String>(seq, kvp.Value)));

注释

  • OrderBy 保留顺序
  • 使用提供项目索引的Select 重载。假定从零开始编号。

关于c# - 如何重新编号 ObservableCollection<KeyValuePair<int, string>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27293974/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com