我有一个叫做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); }
}
}
我的两个问题:
- 这可能吗?
- 如果这是不可能的,有一个替代的实现,你可以建议?
不可能。DependencyProperty
只能在扩展DependencyObject
的类中创建。
DependencyObject的服务和特征包括:依赖属性托管支持。
- 你通过调用register方法注册一个依赖属性,并将该方法的返回值作为一个公共静态字段存储在你的类中。
这可能吗?
不可能
如果不可能,你能建议一个替代的实现吗?
使用INotifyPropertyChanged和IDataErrorInfo与正常CLR属性进行属性验证。示例