没有实现接口成员'System.ComponentModel.INotifyPropertyChanged.Pr

本文关键字:System ComponentModel INotifyPropertyChanged Pr 实现 接口 成员 | 更新日期: 2023-09-27 18:07:59

namespace MimicCreation
{
    public class TreeManager : INotifyPropertyChanged
    {
        public TreeManager() { }
        public TreeManager(string title, string type, string filename)
        {
            this.childElementsValue.CollectionChanged += this.OnCollectionChanged;
            Title = title;
            Type = type;
            FileName = filename;
        }
        public string Title { get; set; }
        public string Type { get; set; }
        public string FileName { get; set; }
        public override string ToString()
        {
            return Title;
        }
        private ObservableCollection<TreeManager> childElementsValue = new ObservableCollection<TreeManager>();
        public ObservableCollection<TreeManager> ChildElements
        {
            get { return childElementsValue; }
            set { childElementsValue = value; }
        }
        public void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
        {
            switch (e.Action)
            {
                case NotifyCollectionChangedAction.Add:
                    foreach (TreeManager item in e.NewItems)
                    {
                        ((System.ComponentModel.INotifyPropertyChanged)item).PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(OnPropertyChanged);
                    }
                    break;
            }
        }
        public void OnPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
        }
    }
}

我得到以下错误:错误'MimicCreation。TreeManager'没有实现接口成员'System.ComponentModel.INotifyPropertyChanged. '编译时PropertyChanged。我有一个可观察集合,我希望能够访问通知时,每个项目在可观察集合被改变,我看不出我做错了什么。有什么想法吗?

谢谢。

没有实现接口成员'System.ComponentModel.INotifyPropertyChanged.Pr

你们都是6岁和7岁

首先,这个类不需要实现INotifyPropertyChanged来订阅可观察集合上的事件。

另外,如果你正在尝试(这就是我如何阅读你的问题),看看集合中的项目是否已经改变,那么他们需要实现INotifyPropertyChanged在一些为什么直接或通过从ObservableObject继承。

其次是PropertyChanged,你需要订阅不更改集合

错误信息与可观察对象集合无关。你声明TreeManager实现了INotifyPropertyChanged,所以你必须实现接口成员。

根据documentation on INotifyPropertyChanged,为了做到这一点,你必须实现事件PropertyChanged -正是编译器抱怨的。