ValidationRule强制使用唯一名称
时间:2020-03-05 18:45:06 来源:igfitidea点击:
我试图编写一个自定义WPF ValidationRule,以强制某个属性在给定集合的上下文中是唯一的。例如:我正在编辑绑定到ListView的自定义对象的集合,并且我需要确保集合中每个对象的Name属性是唯一的。有谁知道如何做到这一点?
解决方案
回答
首先,我将创建一个简单的DependencyObject类来保存集合:
class YourCollectionType : DependencyObject { [PROPERTY DEPENDENCY OF ObservableCollection<YourType> NAMED: BoundList] }
然后,在ValidationRule派生的类上,创建一个属性:
YourCollectionType ListToCheck { get; set; }
然后,在XAML中,执行以下操作:
<Binding.ValidationRules> <YourValidationRule> <YourValidationRule.ListToCheck> <YourCollectionType BoundList="{Binding Path=TheCollectionYouWantToCheck}" /> </YourValidationRule.ListToCheck> </YourValidationRule> </Binding.ValidationRules>
然后在验证中,查看要验证的项目的ListToCheck的BoundList属性的集合。如果在其中,显然会返回错误的验证结果。如果不是,则返回true。