0

我们公司正在为我们的框架使用索引器,这样我们就可以快速地将数据绑定到一个窗口,而无需为每个数据源创建一个属性。由于 WPF(与 Silverlight 不同?)要求您使用 OnPropertyChanged("Item[]") 来指示更改,因此所有使用索引器的项目都会在 UI 上刷新。当控件同时使用 ValidationRule 并通过索引器访问数据时,此功能会导致问题。似乎在为索引器属性调用 OnPropertyChanged 时,当控件出现错误时,它将控件上的数据刷新为数据源中的数据。由于无法为具有键值的索引器属性调用 OnPropertyChanged,因此对另一个控件的更改最终会恢复控件中存在错误的内容。

我的问题是:有没有人能够同时使用索引器属性和 ValidationRule,使得有错误的控件在用户修复控件之前保持其错误?

如果没有,有人有什么建议吗?我们喜欢使用 indexer 属性,因为这使得设置绑定比为每个数据字段创建属性要快得多(我们的应用程序以 CRUD 为中心)。

4

1 回答 1

1

找到的解决方案是实现一个 DynamicObject。这样做使索引器不再被使用,并回避了这个问题。

于 2012-01-06T18:40:17.490 回答