我将 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重载。假定从零开始编号。
