Я создал класс конвертера, который использует интерфейс IValueConverter и InConverter.Он привязан к DataGrid, и ему передается массив строк, в котором он определяет, находится ли значение в массиве.
[ValueConversion(typeof(int), typeof(bool))]
public class InConverter : IValueConverter
{
public object Convert(object value, Type type, object parameter, CultureInfo info)
{
String str = value as String;
String[] compareList = parameter as String[];
if (str != null)
{
foreach (String compare in compareList)
{
if (str == compare)
return true;
}
}
return false;
}
public object ConvertBack(object value, Type type, object parameter, CultureInfo info)
{
throw new NotImplementedException();
}
}
У меня также есть класс конвектора NotItConverter, который по существу возвращает противоположность InConverterи я не хотел иметь избыточный код.Итак, я представлял себе это.
[ValueConversion(typeof(int), typeof(bool))]
public class NotInConverter : InConverter
{
public object Convert(object value, Type type, object parameter, CultureInfo info)
{
return !(Boolean)base.Convert(value, type, parameter, info);
}
public object ConvertBack(object value, Type type, object parameter, CultureInfo info)
{
throw new NotImplementedException();
}
}
Это не работает, хотя.Единственный способ заставить его компилироваться без предупреждения - заставить методы в NotInConverter указывать переопределение, а методы в InConverter - виртуальные.Нет ли более легкого способа сделать это?