将DependencyProperty添加到扩展ObservableCollection的类

时间:2013-01-11 02:23:07

标签: c# wpf dependency-properties observablecollection dependencyobject

我有一个名为ObservableCollectionWithValidState的类,用于在其中一个子对象破坏验证规则时通知自己。

类别:

child
child  <== violated a passed in Predicate and is now invalid.
child

当发生这种情况时,我希望在这个类上有一个DependencyProperty,我可以设置它可以绑定。

问题是我的课程延伸ObservableCollection<T>,但我无法看到如何将DependencyObject放入图片中。

我正在粘贴该类的初始声明以及我想要添加的属性的示例(除非我可以扩展DependencyProperty,否则这将不起作用。)

public class ObservableCollectionWithIsValidState<T> : ObservableCollection<T> where T : INotifyPropertyChanged,
{
    public static readonly DependencyProperty IsValidPropertyProperty = DependencyProperty.Register("IsValid", typeof(bool), typeof(ObservableCollectionWithIsValidState<T>), new PropertyMetadata(true));

    public bool IsValid
    {
       get { return (bool)GetValue(IsValidPropertyProperty); }
       set { SetValue(IsValidPropertyProperty, value); }
    }
}

我的两个问题:

  1. 这可能吗?
  2. 如果不可能有替代实施,你可以建议吗?

1 个答案:

答案 0 :(得分:0)

这是不可能的。 DependencyProperty只能在扩展DependencyObject的类中创建。

来自MSDN-DependendyObject

  

DependencyObject服务和特性包括以下内容:   依赖属性托管支持。

     
      
  • 通过调用Register方法注册依赖项属性,并将方法的返回值存储为类中的公共静态字段。
  •   

  

这可能吗?

不可能

  

如果不可能有替代实施,你可以建议吗?

使用INotifyPropertyChangedIDataErrorInfo具有正常的CLR属性进行属性验证。 Example