在WPF中手动验证控件
情况如下: 我有一个绑定到WPF窗口的数据集。数据集实现IDataErrorInfo,因此当窗口中的值发生更改时,将对更改的特定属性进行验证。 在验证期间,我可能会发现窗口中还有另一个控件需要验证。 我只知道数据集中需要验证的字段名,而不知道绑定到此字段的实际控件。 因此,我的问题是: 1.如何找出哪些控件绑定到数据集中的特定字段? 2.如何通过代码触发该控件的验证在WPF中手动验证控件,wpf,validation,dataset,Wpf,Validation,Dataset,情况如下: 我有一个绑定到WPF窗口的数据集。数据集实现IDataErrorInfo,因此当窗口中的值发生更改时,将对更改的特定属性进行验证。 在验证期间,我可能会发现窗口中还有另一个控件需要验证。 我只知道数据集中需要验证的字段名,而不知道绑定到此字段的实际控件。 因此,我的问题是: 1.如何找出哪些控件绑定到数据集中的特定字段? 2.如何通过代码触发该控件的验证 谢谢 在我看来有两个选择: 我认为处理这种情况的一种方法是在已更改属性的setter中,清除不再有效的属性(如果它现在确实无效)
谢谢 在我看来有两个选择:
PropertyChanged
事件,以强制视图重新评估它我更喜欢第一个选项,因为您知道更改第一个属性有可能使另一个属性无效。您的意思是,在更改和验证一个属性时,另一个到目前为止还可以的属性现在无效,需要重新验证吗?是的。第一个属性中的更改导致另一个属性无效。例如,一个属性保存汽车类型,另一个属性存储汽车的汽油类型。当从柴油车更改为汽油车时,气体类型将变得无效(当然,这可以通过使用事件轻松解决,但这是一个非常简单的示例)。我更喜欢2dn选项,但当我只知道数据集中字段的名称时,如何引发PropertyChanged事件?我需要找出哪个属性绑定到此字段。从
GasType
属性的setter中,提出一个OnPropertyChanged(“CarType”)
。我可能缺少一些内容。好的,OnPropertyChanged是一个WPF方法。数据模型是数据集。如何从数据集中调用OnPropertyChanged?我指的是您自己的OnPropertyChanged
实现,您可能已经实现了它,作为INotifyPropertyChanged
实现的一部分-简而言之,我指的是您为其他属性引发PropertyChanged
事件。@aviapp。嘿,谢谢你的解决方案——它帮了我很多忙:)