Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 跟踪更改的属性中的更改_C#_Wpf_Inotifypropertychanged - Fatal编程技术网

C# 跟踪更改的属性中的更改

C# 跟踪更改的属性中的更改,c#,wpf,inotifypropertychanged,C#,Wpf,Inotifypropertychanged,我想将viewmodel对象的可观察集合过滤到更新的对象。我已为每个viewmodel订阅了属性更改事件。但我不确定如何跟踪对象,以便最终结果仅是UI中更新的对象 ProgramViewModel Cur=new ProgramViewModel(prg); Cur.PropertyChanged += new PropertyChangedEventHandler(Cur_PropertyChanged);

我想将viewmodel对象的可观察集合过滤到更新的对象。我已为每个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
            }
       }

我只想将它们存储在一个
散列集中。这样,您就不必担心跟踪哪些已在收藏中:

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模型)
{
...
}
}