I am stuck in a seemingly common requirement. I have a WPF Prism (for MVVM) application. My model implements the IDataErrorInfo for validation. The
I encountered the same problem and solved it with a trick. See the converter below:
public class IntValidationConverter : IValueConverter
{
static string[] AllValuse = new string[100000];
static int index = 1;
public static int StartOfErrorCodeIndex = -2000000000;
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null) return null;
if (value.ToString() == "") return null;
int iValue = (int)(value);
if (iValue == int.MinValue) return null;
if (iValue >= StartOfErrorCodeIndex) return value;
if ((iValue < IntValidationConverter.StartOfErrorCodeIndex) && (iValue > int.MinValue)) return AllValuse[StartOfErrorCodeIndex - iValue];
return null;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null) return int.MinValue;
if (value.ToString() == "") return int.MinValue;
int result;
bool success = int.TryParse(value.ToString(), out result);
if (success) return result;
index++;
AllValuse[index] = value.ToString();
return StartOfErrorCodeIndex - index;
}
}