2011-01-14 21 views
0

Ich lerne über beobachtbare Sammlungen, so schrieb ich ein kleines Programm, um meine Fortschritte zu testen. Ich habe eine Observable Collection-Klasse, die ich Anfangswerte aus einer Liste liefern und die Observablecollection an ein Datagrid binden. Es funktioniert großartig, aber wenn ich die Liste mit myListOfPlayers.myList.Clear() lösche, wird das Datagrid nicht gelöscht. Ich dachte, dass die INotifyPropertyChanged-Eigenschaft das behandeln würde. Was mache ich falsch?Observable Sammlung Sammlung geändert Frage

public class PlayerList : ObservableCollection<PlayerName> //observable collection class 
    { 
     public PlayerList() 
      : base() 
     { 
      Clear(); 

      foreach (var p in myListOfPlayers.myList.OrderBy(x => x.Score)) 
      { 
       Add(p); 
      } 
     } 

     public PlayerList(List<PlayerName> list) 
      : base(list) 
     { 
      Clear(); 

      foreach (var p in list) 
      { 
       Add(p); 
      } 
     } 
    } 

I INotifyPropertyChanged in der Player Klasse implementieren:

public class PlayerName : INotifyPropertyChanged 
    { 
     private string _name; 

     public string Name 
     { 
      get { return _name; } 
      set 
      { 
       _name = value; 
       OnPropertyChanged("Name"); 
      } 
     } 

     private int _score; 

     public int Score 
     { 
      get { return _score; } 
      set 
      { 
       _score = value; 
       OnPropertyChanged("Score"); 
      } 
     } 

     public event PropertyChangedEventHandler PropertyChanged; 

     protected virtual void OnPropertyChanged(string propertyName) 
     { 
      var handler = PropertyChanged; 

      if (handler != null) 
      { 
       handler(this, new PropertyChangedEventArgs(propertyName)); 
      } 
     } 
    } 

Antwort

0

Wenn Sie klar myListOfPlayers.myList, die PlayerList nicht gelöscht werden soll ... Es gibt keine Beziehung zwischen diesen zwei Listen: Sie gerade verwendet myListOfPlayers.myList, um den Inhalt von PlayerList zu initialisieren, aber sie sind zwei verschiedene Listen. Was Sie auf einem von ihnen tun, betrifft nicht die anderen

+0

Das macht Sinn, aber dann, wie lösche ich die beobachtbare Sammlung? –

+0

Durch den Aufruf von Clear in der ObservableCollection, nicht in der "source" -Ansammlung ... –

Verwandte Themen