2011-01-14 62 views
0

我正在学习可观察集合,所以我编写了一个小程序来测试我的进度。 我有一个可观察的集合类,我从列表中提供初始值并将observablecollection绑定到Datagrid。它工作得很好,但是当我使用myListOfPlayers.myList.Clear()清除列表时,Datagrid不清除。我认为INotifyPropertyChanged属性会处理。我究竟做错了什么?Observable collection collection已更改问题

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

我在PlayerName类执行INotifyPropertyChanged:

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

这很有道理,但是我该如何清除可观察集合? – 2011-01-14 19:19:40

相关问题