我有一个项目列表,我将它放在一个ObservableCollection中,然后我将数据绑定到在XAML中创建的数据网格UI。显示的列之一是列表中项目的索引。目前,我正在创建一个属性并绑定它。但是,当我需要更新/添加/删除列表中的项目时,这会产生大量工作 - 我必须浏览所有受影响的项目并更改其属性。我的问题是:有没有办法在UI中自动显示集合中项目的索引?
答案 0 :(得分:2)
您可以使用转换器进行绑定,转换器会执行查找以查找索引。然后,无论您的项目位于集合中的哪个位置,您都将拥有正确的索引。
答案 1 :(得分:1)
您是否考虑过在顶层实现一个viewmodel?然后你可以显示你想要的ObservableCollection并在封面下实现它
public class IndexedObject
{
private object _rootObject;
private int _index;
public IndexedObject(object rootObject, int index)
{
_rootObject = rootObject;
_index=index;
}
public string Value
{
get
{
return _rootObject.ToString();
}
}
public int Index
{
get
{
return _index;
}
}
}
然后,您可以在类或显示ObservableCollection
的类上实现此属性 ObservableCollection<object> _yourCollection;
public IEnumerable<IndexedObject> IndexedObjects
{
get
{
for (int i = 0; i < _yourCollection.Count; i++)
{
yield return new IndexedObject(_yourCollection[i], i);
}
}
}
然后,您将使ObservableCollection collectionchanged事件通知程序您的IndexedObjects属性已更改。然后你可以绑定到IndexedObjects属性并使用Index属性,而不管下面的实际集合是什么样的:)