【问题标题】:Why does ObservableCollection hide INotifyPropertyChanged.PropertyChanged为什么 ObservableCollection 隐藏 INotifyPropertyChanged.PropertyChanged
【发布时间】:2010-10-23 04:16:48
【问题描述】:

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

没有创建一个悬挂在实现 INotifyPropertyChanged 并容纳这些新属性的类的对象,有没有我忽略的解决方法?

【问题讨论】:

    标签: c# wpf xaml observablecollection data-binding


    【解决方案1】:

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

    ObservableCollection collection;
    
    collection.PropertyChanged += ...;
    

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

    ObservableCollection collection;
    
    INotifyPropertyChanged iproperty = collection;
    
    iproperty.PropertyChanged += ...;
    

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

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

    【讨论】:

      【解决方案2】:

      ObservableCollection 确实实现了 INotifyPropertyChanged,http://msdn.microsoft.com/en-us/library/bb460458.aspx,但是...

      我似乎过早地发布了这个问题,我的测试应用程序可以挑战我的假设。

      【讨论】:

      • 我测试了我的答案,发现我错了,很抱歉误导了你,或者至少是无意中试图这样做。
      猜你喜欢
      • 2014-08-28
      • 2023-03-23
      • 2016-04-29
      • 1970-01-01
      • 2014-10-26
      • 2016-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多