2011-01-14 5 views
0

Я узнаю о наблюдаемых коллекциях, поэтому я написал небольшую программу для проверки моего прогресса. У меня есть наблюдаемый класс коллекции, который я предоставляю исходные значения из списка и привязываю наблюдаемый коллектив к Datagrid. Он отлично работает, но когда я очищаю список, используя myListOfPlayers.myList.Clear(), Datagrid не очищается. Я думал, что свойство INotifyPropertyChanged будет обрабатывать это. Что я делаю не так?Наблюдаемая коллекция коллекции изменила вопрос

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); 
      } 
     } 
    } 

я реализую INotifyPropertyChanged в классе Playername:

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)); 
      } 
     } 
    } 

ответ

0

Если вы ясно myListOfPlayers.myList, то PlayerList не должен быть очищен ... Там нет никакой связи между этими 2 списка: вы просто использовали myListOfPlayers.myList для инициализации содержимого PlayerList, но это два разных списка. То, что вы делаете на одном из них, не влияет на других

+0

Это имеет смысл, но как же я могу очистить наблюдаемую коллекцию? –

+0

Вызов Clear на ObservableCollection, а не в «исходной» коллекции ... –

Смежные вопросы