2

我有一个名为的类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. 如果不可能,您可以建议替代实现吗?
4

1 回答 1

2

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

来自MSDN-DependendyObject

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

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

这可能吗?

不可能

如果不可能,您可以建议替代实现吗?

使用具有普通 CLR 属性的INotifyPropertyChangedIDataErrorInfo进行属性验证。例子

于 2013-01-11T03:33:36.880 回答