c# - 为什么 ObservableCollection 隐藏 INotifyPropertyChanged.PropertyChanged

标签 c# wpf xaml observablecollection data-binding

我有一个派生自 ObservableCollection 的类。我想向此类(不是集合中的项目)添加一些属性,但发现它的 PropertyChanged 实现受到保护。由于其 protected ,我认为这就是我尝试绑定(bind)到 XAML 中的这些新属性的尝试失败的原因。

如果没有创建一个卡在实现 INotifyPropertyChanged 并包含这些新属性的类之外的对象,是否有我忽略的解决方法?

最佳答案

如果该类实际上实现了该接口(interface),但显式实现了该接口(interface)并在具体实现上放置了访问修饰符,那么您需要做的就是在接口(interface)本身的上下文中获取该对象,然后您就可以使用它了。例如..

ObservableCollection collection;

collection.PropertyChanged += ...;

这可能会失败,因为它的 PropertyChanged 实现是 protected 。但是,您可以这样做:

ObservableCollection collection;

INotifyPropertyChanged iproperty = collection;

iproperty.PropertyChanged += ...;

这应该可行,因为您将对象作为接口(interface)的一个实例来处理,而不是仅仅通过类定义访问接口(interface)成员。

我没有做过任何 WPF,所以我不知道 ObservableCollection 是否真的实现了 INotifyPropertyChanged,但如果它实现了,那么这应该可行。

关于c# - 为什么 ObservableCollection 隐藏 INotifyPropertyChanged.PropertyChanged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/812353/

相关文章:

c# - 如何调用 setter 内部的逻辑?

c# - 删除有人打开文件的目录

c# - 在这个简单的 WPF 应用程序中实现进度条

c# - UserControl InputBindings 仅在先按下按钮后工作

wpf - 在资源字典中的样式中绑定(bind) Setter 值

c# XAML ProgressBar 正确设置渐变填充

c# - 编码的 UI 测试 - 运行 exe 文件作为清理脚本

c# - 在 C# 中显示带有 "detail"按钮的错误消息框

c# - 如何从另一个页面调用 MainWindow 上的方法

c# - 二维对象数组返回类型 - NSubstitute