2

我有以下课程:

public class FirstClass 
{
   public FirstClass()
   {
       list = new List<SomeType>();
   }

   public List<SomeType> list;
}

在有人将元素放入该列表之后,是否可以执行一些操作,例如触发不同的方法?

4

5 回答 5

5

您应该使用 aObservableCollection<SomeType>来代替。

ObservableCollection<T>提供CollectionChanged您可以订阅的CollectionChanged事件 - 当添加、删除、更改、移动项目或刷新整个列表时触发该事件。

于 2012-04-09T16:10:49.880 回答
4

也许你应该使用ObservableCollection<T>. 它在添加或删除项目或其他几个事件时触发事件。

这是文档:http: //msdn.microsoft.com/en-us/library/ms668604.aspx

于 2012-04-09T16:11:39.147 回答
2

List不会为此公开任何事件。您应该考虑ObservableCollection改用。它具有CollectionChanged在添加、删除、更改、移动或刷新整个列表时发生的事件。

于 2012-04-09T16:11:22.833 回答
1

你可以做类似的事情

        private List<SomeType> _list;

        public void AddToList(SomeType item)
    {
        _list.Add(item);
        SomeOtherMethod();
    }

      public ReadOnlyCollection<SomeType> MyList
    {
       get { return _list.AsReadOnly(); }
}

但 ObservableCollection 最好。

于 2012-04-09T16:14:51.550 回答
0

如果您创建自己的 IList 实现,则可以在将项目添加到列表时调用方法(或执行任何其他操作)。创建一个继承自 IList 的类,并将 T 类型的列表作为私有成员。使用您的私有成员实现每个接口方法,并将 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
   }
于 2012-04-09T16:47:45.713 回答