2010-04-29 163 views
1

我想過濾可觀察到的viewmodel對象集合到更新的對象。我訂閱了每個視圖模型的Property Changed事件。但我不確定我應該如何跟蹤這些對象,以便最終結果將只是在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 
      } 
     } 

回答

2

我只是將它們存儲在HashSet<ProgramViewModel>中。這樣,你就不必擔心跟蹤哪些已經在集合中:

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) 
    { 
     ... 
    } 
} 
+0

完美..謝謝很多:) – developer 2010-04-29 20:43:16