Passing state of WPF ValidationRule to View Model in MVVM

前端 未结 9 1719
难免孤独
难免孤独 2021-01-01 20:10

I am stuck in a seemingly common requirement. I have a WPF Prism (for MVVM) application. My model implements the IDataErrorInfo for validation. The

9条回答
  •  既然无缘
    2021-01-01 21:01

    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;
        }
    }
    

提交回复
热议问题