Bon et bien j'ai trouvé une solution. C'est un peu violent, mais ça force le DataError et donc je peux catcher l'erreur de saisie.
Lors du chargement de mes données, j'ai ajouté ce test :
if (Column.ValueType == typeof(decimal))
Column.ValueType = typeof(string); |
En gros, pour les colonnes définies en Decimal côté Oracle, je les repasse en type string. Du coup, lorsque l'on sort du champ, cela génère une erreur si la conversion en decimal échoue. Enfin, j'ai surchargé la méthode DataError de la DataGrid pour prévenir l'utilisateur qu'il y a un problème avec le point décimal.
Sinon, j'allais tenter ça, mais c'est plus long : http://www.theproblemsolver.nl/dotnet_faq_0015.htm
Tout est bien qui fini bien