Ich lerne über beobachtbare Sammlungen, so schrieb ich ein kleines Programm, um meine Fortschritte zu testen. Ich habe eine Observable Collection-Klasse, die ich Anfangswerte aus einer Liste liefern und die Observablecollection an ein Datagrid binden. Es funktioniert großartig, aber wenn ich die Liste mit myListOfPlayers.myList.Clear() lösche, wird das Datagrid nicht gelöscht. Ich dachte, dass die INotifyPropertyChanged-Eigenschaft das behandeln würde. Was mache ich falsch?Observable Sammlung Sammlung geändert Frage
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);
}
}
}
I INotifyPropertyChanged in der Player Klasse implementieren:
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));
}
}
}
Das macht Sinn, aber dann, wie lösche ich die beobachtbare Sammlung? –
Durch den Aufruf von Clear in der ObservableCollection, nicht in der "source" -Ansammlung ... –