3

我有一个实现 IDataErrorInfo 的数据对象,但是验证逻辑有点慢。不是那么慢,但足够慢,你不想调用它很多次。在我的应用程序中,这些对象的列表显示在 DataGridView 控件中。网格是只读的,并且只会包含有效的数据对象,但是 DataGridView 坚持为网格中的每个单元格调用 IDataErrorInfo.this[string columnName] ,这使得重新绘制非常缓慢。

我尝试将 ShowCellErrors 和 ShowRowErrors 设置为 false,但它仍在调用 IDataErrorInfo.this[string columnName]。有什么想法可以阻止它验证我知道有效的对象吗?

4

1 回答 1

1

作为一个便宜的选择......也许你可以在你的对象上设置一个标志来禁用验证并总是""从 2IDataErrorInfo种方法返回?

obj.ValidationEnabled = false; // etc

如果这是一个主要问题,您可以引入一个模仿实际类型但不实现的传递对象IDataErrorInfo。要么通过手动编写外观,要么创造性地使用System.ComponentModel(大概是一个ITypedListor TypeDescriptionProvider;请注意,仅对于单一类型不值得 - 手动编写一个类会更容易)。

于 2009-07-08T11:54:18.727 回答