2011-11-24 1 views

Répondre

0

Vous pouvez oberve votre ObservableCollection et enregistrer le EventHandler à tous les nouveaux articles comme ça (je ne suis pas en utilisant exactement la structure de votre cours, vous devrez le modifier pour votre projet):

public class MainViewModel : ViewModelBase 
{ 
    public ObservableCollection<Person> Persons { get; set; } 

    public MainViewModel() 
    { 
     Persons = new ObservableCollection<Person>(); 
     Persons.CollectionChanged += PersonCollectionChanged; 
    } 

    private void PersonCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) 
    { 
     if(e.Action == NotifyCollectionChangedAction.Add) 
     { 
      foreach(Person person in e.NewItems) 
      { 
       person.Friend_Add += new EventHandler(Add); 
      } 
     } 
    } 
} 

Modifier : dessous est une implémentation de la classe PersonCollection que vous souhaitez utiliser. Vous pouvez maintenant choisir si vous souhaitez utiliser l'une de ces implémentations. (Je préférerais le premier)

public class Person 
{ 
    public event EventHandler AddedFriend; 
} 

public class PersonCollection : ObservableCollection<Person> 
{ 
    public event EventHandler AddedFriend; 

    public PersonCollection() : base(new ObservableCollection<Person>()) 
    { 
     base.CollectionChanged += PersonCollectionChanged; 
    } 

    private void PersonCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) 
    { 
     if (e.Action == NotifyCollectionChangedAction.Add) 
     { 
      foreach (Person person in e.NewItems) 
      { 
       person.AddedFriend += PersonAddedFriend; 
      } 
     } 
    } 

    private void PersonAddedFriend(object sender, EventArgs e) 
    { 
     var addedFriend = AddedFriend; 
     if (addedFriend != null) 
     { 
      addedFriend(sender, e); 
     } 
    } 
} 
Questions connexes