我想子类化ObservableCollection
向其添加属性。不幸的是,PropertyChanged
事件受到保护。基本上,我想将其子类化以具有SelectedItem
我可以绑定到我的 MVVM WPF 应用程序中的列表。
这是我的班级的框架:
public class SelectableList<T> : ObservableCollection<T>
{
public T SelectedItem {get;set;}
}
但我不能执行以下操作:
SelectableList<int> intList = new SelectableList<int>();
intList.PropertyChanged += new PropertyChangedEventHandler(intList_Changed);
因为访问限制。这让我提出了一个更深层次的问题。 UI是如何通知的PropertyChanged
事件(例如计数属性)?请注意,我无法在代码隐藏中执行此操作。
我的头很晕,有人可以帮我解惑吗?
SelectableList<int> intList = new SelectableList<int>();
((INotifyPropertyChanged)intList).PropertyChanged +=
new PropertyChangedEventHandler(intList_Changed);
可观察集合显式实现 INotifyPropertyChanged http://msdn.microsoft.com/en-us/library/aa288461%28v=vs.71%29.aspx,这意味着您必须先将实例强制转换为接口,然后才能访问接口的方法、属性和事件。至于为什么要这样做,我不知道。这绑定标记扩展 http://msdn.microsoft.com/en-us/library/system.windows.data.binding.aspxn 不“知道”ObservableCollections 或任何其他类型。它检查类型以查看它们是否实现或扩展特定的接口/基类(INPC、INCC、DependencyObject 等),因此不关心接口是否显式实现。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)