没有实现接口成员'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。我有一个可观察集合,我希望能够访问通知时,每个项目在可观察集合被改变,我看不出我做错了什么。有什么想法吗?
谢谢。
你们都是6岁和7岁
首先,这个类不需要实现INotifyPropertyChanged来订阅可观察集合上的事件。
另外,如果你正在尝试(这就是我如何阅读你的问题),看看集合中的项目是否已经改变,那么他们需要实现INotifyPropertyChanged在一些为什么直接或通过从ObservableObject继承。
其次是PropertyChanged,你需要订阅不更改集合
错误信息与可观察对象集合无关。你声明TreeManager
实现了INotifyPropertyChanged
,所以你必须实现接口成员。
根据documentation on INotifyPropertyChanged
,为了做到这一点,你必须实现事件PropertyChanged
-正是编译器抱怨的。