Наблюдаемый сбор коллекции изменил вопрос - PullRequest
0 голосов
/ 14 января 2011

Я узнаю о наблюдаемых коллекциях, поэтому я написал небольшую программу, чтобы проверить мой прогресс. У меня есть наблюдаемый класс коллекции, который я предоставляю начальные значения из списка и связываю наблюдаемую коллекцию с сеткой данных. Это прекрасно работает, но когда я очищаю список с помощью 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 в классе 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));
            }
        }
    }

1 Ответ

0 голосов
/ 14 января 2011

Если вы очистите myListOfPlayers.myList, PlayerList не должен очищаться ... Между этими двумя списками нет никакой связи: вы просто использовали myListOfPlayers.myList для инициализации содержимого PlayerList, но они два разных списка. То, что вы делаете на одном из них, не влияет на другое

...