2010-06-05 10 views

Respuesta

13

IDataErrorInfo.Error se utiliza para informar el estado de validación de todo el objeto.

Por ejemplo, si su objeto tiene propiedades StartTime y EndTime probablemente querrá que StartTime sea menor que el EndTime y si esta regla de validación se rompe, no será apropiado mostrar un mensaje ni para una ni para la otra propiedad.

La propiedad del error también es apropiada para resumir el estado de validación general de su objeto. Entonces la respuesta es no, no debes verificar cada propiedad. Los mensajes de error relacionados con una propiedad particular están expuestos por

string this[string columnName] 

indexer.

EDITAR: aquí un link que explica cómo se supone que se utiliza la interfaz.

+0

Lo que dices suena razonable, pero ¿tienes algo para respaldarlo? Parece que utilizar el reflejo para obtener todas las propiedades para comprobar sería bastante caro. –

+0

Puede comprobar cómo los controles de Microsofts (como DataGrid) reaccionan a los datos que implementan la interfaz. Puedes observar las llamadas que hace. Si aún no está convencido de que puede verificar http://msdn.microsoft.com/en-us/library/system.componentmodel.idataerrorinfo%28VS.95%29.aspx ese enlace y el ejemplo de cómo se utiliza. – Koynov

+3

el enlace de MSDN en la respuesta dice "Tenga en cuenta que el motor de enlace nunca usa la propiedad Error, aunque puede usarlo en informes de error personalizados para mostrar errores a nivel de objeto". sin embargo, recibo un punto de ruptura dentro de "Error" que tiene BindingExpression.TransferValue en la pila de llamadas: - / –

Cuestiones relacionadas