2011-01-14 24 views
0

私は観測可能なコレクションについて学んでいるので、私は進歩をテストするための小さなプログラムを書いた。 私はリストから初期値を与え、ObservableCollectionを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のを実装:

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.myListPlayerListをクリアすることが想定されていない場合は...これら2つのリストの間には関係がありません:あなただけの使用しますmyListOfPlayers.myListは、PlayerListの内容を初期化しますが、2つの異なるリストです。そのうちの1つで行うことは、他のものに影響しません

+0

それは意味がありますが、どのように観測可能なコレクションをクリアするのですか? –

+0

「ソース」コレクションではなく、ObservableCollectionでClearを呼び出すと... –

関連する問題