2010-07-22 51 views
0

我有一个名为Items的公共属性,它是一个List。我想告诉它什么时候改变了。我怎样才能做到这一点?如何知道集合已被编辑?

例如,如果Items.Add被调用,我希望能够然后调用UpdateInnerList。

我该怎么做?

回答

5

您能使用ObservableCollection吗?

http://msdn.microsoft.com/en-us/library/ms668604.aspx

+1

关于使用'ObservableCollection'的唯一警告是,如果您需要对正在更改的项目进行操作,'.Clear()'方法引发更改的事件,但参数中没有项目,因此,您不知道什么是除去。这显然只与你关心有关。 – Marc 2010-07-22 16:21:53

+0

很高兴知道。感谢您的评论。 – 2010-07-22 16:22:28

+0

.net 3.5?...... – spender 2010-07-22 16:22:34

2

如何创建一个List子类并重写Add方法?

void Main() 
{ 
    var x=new MySpecialList<string>(); 
    x.Add("hello"); 
} 

class MySpecialList<T>:List<T> 
{ 
    public new void Add(T item) 
    { 
     //special action here 
     Console.WriteLine("added "+item); 
     base.Add(item); 
    } 
} 
+1

如果它被填入基本'List '作为一个变量,这个'.Add'永远不会被调用。 – Marc 2010-07-22 16:24:12

+0

“塞进基地......”?我不明白你的意思。 – spender 2010-07-22 16:26:58

+0

'List items = new MySpecialList (); items.Add(5);'没有写控制台输出。这是使用'new'来影响基类的方法的祸根,而不是实现'IList '而不是你的建议。 – Marc 2010-07-22 16:28:25

相关问题