Я хочу отфильтровать свой заметный набор объектов viewmodel к объектам, которые обновляются. Я подписался на событие Property Changed для каждого viewmodel. Но я не уверен, как я отслежу объекты, таким образом, конечным результатом были бы только объекты, которые обновляются в UI.
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
}
}
Я бы просто сохранил их в HashSet
. Таким образом, вам не придется беспокоиться об отслеживании, какие из них уже есть в коллекции:
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)
{
...
}
}