我相信事件CollectionChanged
是你需要的。你可以做這樣的事情:
((ICollectionView)yourListCollectionView).CollectionChanged += handler;
,我們要在這裏投是CollectionChanged
是爲INotifyPropertyChanged
成員(在這個界面ICollectionView
繼承)實現的原因,源代碼在這裏:
event NotifyCollectionChangedEventHandler INotifyCollectionChanged.CollectionChanged
{
add {
CollectionChanged += value;
}
remove {
CollectionChanged -= value;
}
}
這實施是明確。因此,作爲公衆成員,該活動隱藏了正常訪問權限。要公開該成員,您可以將實例投射到ICollectionView
或INotifyPropertyChanged
。
。當明確實現接口時,必須在能夠訪問接口成員之前將實例顯式轉換到該接口。
有關實現接口的實例:
public interface IA {
void Test();
}
//implicitly implement
public class A : IA {
public void Test() { ... }
}
var a = new A();
a.Test();//you can do this
//explicitly implement
public class A : IA {
void IA.Test() { ... } //note that there is no public and the interface name
// is required
}
var a = new A();
((IA)a).Test(); //this is how you do it.
但ListCollectionView的人不能沒有的東西hapening – Paparazzi 2014-09-26 19:24:09
你說得對,我可以扎入每個項目的'PropertyChanged'事件,並聽取更改申請一個新的排序,並偵聽'TreeView'的'ItemsSource'上的'CollectionChanged'事件是爲了將處理程序附加/分離到每個項目,但這是很多工作。工作'ListCollectionView'已經在表面下爲我做了。如果我需要經過這麼多的努力,我可能只是完全跳過實況整形,並在ViewModel中手動排序我的列表。 – 2014-09-26 19:40:11
@NathanFriend是不是'CollectionChanged'應該做你想做的?你甚至嘗試過處理這個事件嗎? – 2014-09-26 19:53:03