我正在学习可观察的集合,所以我写了一个小程序来测试我的进度。 我有一个可观察的集合类,我从列表中提供初始值并将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);
}
}
}
我在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 :(得分:0)
如果您清除myListOfPlayers.myList
,则PlayerList
不应被清除......这两个列表之间没有任何关系:您刚刚使用myListOfPlayers.myList
来初始化PlayerList
的内容{1}},但它们是两个不同的列表。你在其中一个上做的事情不会影响其他人