J'apprends des collections observables, j'ai donc écrit un petit programme pour tester mes progrès. J'ai une classe de collection observable que je fournis des valeurs initiales à partir d'une liste et lier la collection observablec à un Datagrid. Cela fonctionne très bien, mais quand j'efface la liste en utilisant myListOfPlayers.myList.Clear(), le Datagrid ne s'efface pas. Je pensais que la propriété INotifyPropertyChanged gérerait cela. Qu'est-ce que je fais mal?Collection de collection observable a changé la question
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);
}
}
}
je mets en œuvre INotifyPropertyChanged dans la classe 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));
}
}
}
Cela a du sens, mais alors comment puis-je effacer la collection observable? –
En appelant Clear sur ObservableCollection, pas sur la collection "source" ... –