通过 NotifyCollectionChangedEventArgs 或发送者获取实例的 ObservableCollection
Get holding ObservableCollection of Instance by NotifyCollectionChangedEventArgs or sender
我有一份房屋物品清单。这些继承了 ObservableCollections of Persons
public class House{
public ObservableCollection<Person> Residents = new ObservableCollection<Person>();
...
}
在任何 class 我添加了 Residents-Handler
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
}
}
}
一个人应该也可以同时在一个以上的房子里。我无法更改人员属性。
谢谢!
sender
参数保存 ObservableCollection 实例:
private void OnResidents_Changed(object sender, NotifyCollectionChangedEventArgs e)
{
var collection = (ObservableCollection<Person>)sender;
...
}
请注意,您应该将集合声明为(只读)属性 而不是字段,以使其可供 WPF 数据绑定访问:
public class House
{
public ObservableCollection<Person> Residents { get; }
= new ObservableCollection<Person>();
...
}
我有一份房屋物品清单。这些继承了 ObservableCollections of Persons
public class House{
public ObservableCollection<Person> Residents = new ObservableCollection<Person>();
...
}
在任何 class 我添加了 Residents-Handler
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
}
}
}
一个人应该也可以同时在一个以上的房子里。我无法更改人员属性。
谢谢!
sender
参数保存 ObservableCollection 实例:
private void OnResidents_Changed(object sender, NotifyCollectionChangedEventArgs e)
{
var collection = (ObservableCollection<Person>)sender;
...
}
请注意,您应该将集合声明为(只读)属性 而不是字段,以使其可供 WPF 数据绑定访问:
public class House
{
public ObservableCollection<Person> Residents { get; }
= new ObservableCollection<Person>();
...
}