0
집 개체 목록이 있습니다. 모든 클래스에서 사람NotifyCollectionChangedEventArgs 또는 보낸 사람에 의한 인스턴스의 ObservableCollection 보유
public class House{
public ObservableCollection<Person> Residents = new ObservableCollection<Person>();
...
}
이러한 상속 ObservableCollections 내가는 거주자-처리기를 추가
List<House> Village = new List<House>();
foreach (House h in Village) {
h.Residents.CollectionChanged += OnResidents_Changed;
}
처리 :
private void OnResidents_Changed(object sender, NotifyCollectionChangedEventArgs e) {
if (e.NewItems!= null) {
foreach(Person p in e.NewItems){
//In which house did he go?
e.GetSourceCollection() //<- how to solve
}
}
}
이 사람은 또한 두 개 이상의 집에있을 수 있습니다한다 같은 시간. 나는 사람의 속성을 변경할 가능성이 없다.
Thx!
private void OnResidents_Changed(object sender, NotifyCollectionChangedEventArgs e)
{
var collection = (ObservableCollection<Person>)sender;
...
}
참고로
, 당신은 대신 필드의 (읽기 전용) 속성으로 컬렉션을 선언해야 바인딩은 접근 WPF 데이터에 만들 :
나는이 역시 생각했지만 발신자는 'Person' 유형입니다. 'ObservableCollection'유형이 아닌 이유를 모르십니까? 그러나 모든 ObservableCollection에서 동일한 동작입니다. [Microsoft API 참조] (https://msdn.microsoft.com/en-us/library/system.collections.specialized.notifycollectionchangedeventhandler (v = vs.110) .aspx) 그러나 이것은 정확하지 않습니다./ –
아니요, 보낸 사람은 ObservableCollection입니다. 그렇지 않다면, 우리는 당신의 질문에있는 코드에 대해 말하는 것이 아닙니다. – Clemens
오우 네가 옳았 어! 미안, 내 잘못이야. 필자의 경우, 집에 집을 짓지 않고 집을 짓는다. Person :/답장을 보내 주셔서 감사합니다 !! 그것을 보지 못했습니다. 질문은 이제 아주 사소하게 나타납니다. –