【问题标题】:Observable collection collection changed questionObservablecollection collectionchanged question
【发布时间】:2023-04-09 20:59:01
【问题描述】:

我正在学习可观察集合,所以我编写了一个小程序来测试我的进度。 我有一个可观察的集合类,我从列表中提供初始值并将 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));
            }
        }
    }

【问题讨论】:

    标签: wpf observablecollection


    【解决方案1】:

    如果你清除myListOfPlayers.myListPlayerList就不应该被清除...这两个列表之间没有关系:你只是使用myListOfPlayers.myList来初始化PlayerList的内容,但它们是两个不同的列表。你在其中一个上所做的不会影响另一个

    【讨论】:

    • 说的有道理,但是我该如何清除 observable 集合呢?
    猜你喜欢
    • 2013-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    相关资源
    最近更新 更多