C# 跟踪更改的属性中的更改
我想将viewmodel对象的可观察集合过滤到更新的对象。我已为每个viewmodel订阅了属性更改事件。但我不确定如何跟踪对象,以便最终结果仅是UI中更新的对象C# 跟踪更改的属性中的更改,c#,wpf,inotifypropertychanged,C#,Wpf,Inotifypropertychanged,我想将viewmodel对象的可观察集合过滤到更新的对象。我已为每个viewmodel订阅了属性更改事件。但我不确定如何跟踪对象,以便最终结果仅是UI中更新的对象 ProgramViewModel Cur=new ProgramViewModel(prg); Cur.PropertyChanged += new PropertyChangedEventHandler(Cur_PropertyChanged);
ProgramViewModel Cur=new ProgramViewModel(prg);
Cur.PropertyChanged += new PropertyChangedEventHandler(Cur_PropertyChanged);
program.Add(Cur);
//here program is my observable collection of viewmodels
void Cur_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
//What will be the code that will filter out only updated objects
throw new NotImplementedException();
}
//Now in my Save Event handler
private void Save_Click(object sender, RoutedEventArgs e)
{
foreach (ProgramViewModel model in program)
{
//I need only updated objects here to be added to database
}
}
我只想将它们存储在一个
散列集中。这样,您就不必担心跟踪哪些已在收藏中:
private readonly HashSet<ProgramViewModel> changedPrograms = new HashSet<ProgramViewModel>();
void Cur_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
changedPrograms.Add((ProgramViewModel)sender);
}
private void Save_Click(object sender, RoutedEventArgs e)
{
foreach (ProgramViewModel model in changedPrograms)
{
...
}
}
private readonly HashSet changedPrograms=new HashSet();
void Cur_PropertyChanged(对象发送方,propertychangedventargs e)
{
更改程序。添加((ProgramViewModel)发送方);
}
私有无效保存\单击(对象发送者,路由目标)
{
foreach(changedPrograms中的ProgramViewModel模型)
{
...
}
}