我有以下课程:
public class FirstClass
{
public FirstClass()
{
list = new List<SomeType>();
}
public List<SomeType> list;
}
在有人将元素放入该列表后,是否可以执行某些操作,例如fire不同的方法?
答案 0 :(得分:5)
您应该使用ObservableCollection<SomeType>
代替。
ObservableCollection<T>
提供您可以订阅的CollectionChanged
事件 - 在添加,删除,更改,移动项目或刷新整个列表时会触发CollectionChanged
事件。< / p>
答案 1 :(得分:4)
也许您应该使用ObservableCollection<T>
。它会在添加或删除项目时触发事件,或者其他几个事件。
答案 2 :(得分:2)
List
不会公开任何事件。您应该考虑使用ObservableCollection
。如果添加,删除,更改,移动项目或刷新整个列表,则会发生CollectionChanged
事件。
答案 3 :(得分:1)
private List<SomeType> _list;
public void AddToList(SomeType item)
{
_list.Add(item);
SomeOtherMethod();
}
public ReadOnlyCollection<SomeType> MyList
{
get { return _list.AsReadOnly(); }
}
但ObservableCollection最好。
答案 4 :(得分:0)
如果您创建自己的IList实现,则可以在将项添加到列表中时调用方法(或执行您想要的任何其他操作)。创建一个继承自IList的类,并将类型为T的列表作为私有成员。使用私有成员实现每个Interface方法,并将Add(T item)调用修改为您需要它执行的任何操作
代码:
public class MyList<T> : IList<T>
{
private List<T> _myList = new List<T>();
public IEnumerator<T> GetEnumerator() { return _myList.GetEnumerator(); }
public void Clear() { _myList.Clear(); }
public bool Contains(T item) { return _myList.Contains(item); }
public void Add(T item)
{
_myList.Add(item);
// Call your methods here
}
// ...implement the rest of the IList<T> interface using _myList
}