Hi,
The problem is two fold.
The DataGridControl does support the IDataErrorInfo interface, which the DataRowView's implementation checks its underlying System.Data.DataRow for a column error.
However, the Cell's DataContext and therefore the source of the cell's Content Binding is the System.Data.DataRow, which does not implement the IDataErrorInfo interface.
Why the source is directly the System.Data.DataRow and not the DataRowView ? Well, that's actually our making when binding through our DataGridCollectionView.
You see, a DataView's DataRowViews are reycled and can therefore point to a different underlying System.Data.DataRow as time changes. As you can imagine, this caused us many headaches for restoring the CurrentItem, SelectedItems and many other intricate details I won't plunge into.
This morning, I investigated if we could reach a workaround in our validation code to directly interrogate the System.Data.DataRow's GetColumnError method when comes the time to validate the cell/row or when the cell's content changes from the source.
As of now, there might or might not be a valid workaround. But as far as I can see, it would be far from complete as setting a System.Data.DataRow's error through the SetColumnError method does not seem to notify the source that the item has changed.
This concretely means that there seems to be no way for us to actually know that the user has manually changed the System.Data.DataRow's error state and trigger the workaround I was investigating.
I will log a feature request to be able to reflect the error states of System.Data.DataRow objects.
Sadly though, I wouldn't hold my breath for it to be implemented since what I found up to now is sketchy on its own and since there does not seem any way for us to be notified of a change of error state.
The only thing I could recommend in the meantime would be to use a IBindingList as a source and implement IDataErrorInfo on the business object as shown in our ValidationSample, on the ComposerEditable and ComposersBindingListComplete classes.
I understand that depending on your actual situation, not using a DataView might not be an option, however that's the only solution I see at the moment.
Regards,
Pierre-Luc Ledoux
Software Developer
Xceed Software Inc.