我有一个实现PropertyChanged的模型,在我的ViewModel中有一个这个模型的ObservableCollection,我想知道当ObservableCollection中的一个对象的属性改变时,我如何调用这个方法。
在这个示例代码中,我希望在更改PersonList中某个项的age属性(或任何属性)时调用OrderList方法。
型号
public class Person: NotifyBase
{
public string Name
{
get { return name; }
set { name = value; Notify(); }
}
public int Age
{
get { return age; }
set { age = value; Notify(); }
}
通知库
public class NotifyBase : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public void Notificar([CallerMemberName] string prop = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(prop));
}
}
视图模型
public class PeopleViewModel : BaseViewModel
{
public ObservableCollection<Person> PersonList { get; set; } = new ObservableCollection<Person> {
new Person{ Name = "John", Age = 21},
new Person{ Name = "Mary", Age = 15},
new Person{ Name = "Steve", Age = 42},
new Person{ Name = "Marik", Age = 23},
};
}
void OrderList(){
List<Person> list = PersonList.OrderBy(x => x.Age).ToList();
PersonList.Clear();
foreach (var item in list )
PersonList.Add(item);
}
1条答案
按热度按时间nnvyjq4y1#
你可以这样做
这样,您就可以订阅列表中对象的每个属性更改事件。