我们公司正在为我们的框架使用索引器,这样我们就可以快速将数据绑定到窗口,而无需为每个数据源创建属性。由于WPF(与Silverlight不同?)要求您使用OnPropertyChanged(“Item []”)来指示更改,因此在UI上刷新使用索引器的所有项目。当控件同时使用ValidationRule并通过索引器访问数据时,此功能会导致问题。似乎在为OnPropertyChanged调用索引器属性时,它会在控件上出现错误时将控件上的数据刷新到数据源中的内容。由于没有办法为具有键值的索引器属性调用OnPropertyChanged,因此对另一个控件的更改最终将还原具有错误的控件中的内容。
我的问题是:是否有人能够同时使用索引器属性和ValidationRule,以便带有错误的控件在用户修复控件之前保持错误?
如果没有,有没有人有任何建议?我们喜欢使用索引器属性,因为这使得设置绑定比为每个数据字段创建属性要快得多(我们的应用程序以CRUD为中心)。
答案 0 :(得分:1)
找到的解决方案是实现DynamicObject。这样做会删除索引器的使用,并回避了问题。