나는 CollectionChanged
이벤트가 필요하다고 생각합니다. 당신이 뭔가를 할 수 있습니다
((ICollectionView)yourListCollectionView).CollectionChanged += handler;
우리가 여기에 캐스팅 CollectionChanged
(이 인터페이스에서 ICollectionView
상속을) INotifyPropertyChanged
의 멤버로 구현되어있는 이유를 여기에 소스 코드 :
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를 당신은, 내가 바로 각 항목의'PropertyChanged' 이벤트에 넥타이 변경을 수신 할 수있는이 생긴 – Paparazzi
뭔가없이 새 정렬을 적용하고, 수신 안 'TreeView'의'ItemsSource'에'CollectionChanged' 이벤트를 추가하여 각 항목에 핸들러를 연결/분리 할 수 있습니다. 그러나 이것은 많은 작업입니다. ListCollectionView가 나를 위해 표면 아래에서 이미 작업하고 있음. 그렇게 많은 노력을 기울여야한다면 ViewModel에서 라이브 모양을 건너 뛰고 내 목록을 수동으로 정렬 할 수 있습니다. –
@NathanFriend는 'CollectionChanged'가 원하는 것을해야하지 않습니까? 그 사건을 다 처리하려고 했니? –