Я согласен с ответом @Todd White.
Кроме того, чтобы сэкономить время, вы можете реализовать базовый класс преобразователя, который реализует ConvertBack
, чтобы вам не приходилось применять его каждый раз, сохраняя дублирующийся код.
Технически, вам также не нужно переопределять Convert
; Но это должно быть реализовано в ConverterBase
, поскольку оно реализует все методы интерфейса IValueConverter
. На практике вы будете переопределять Convert
каждый раз, а ConvertBack
можно игнорировать большую часть времени.
public class ConverterBase : IValueConverter
{
public virtual object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return DependencyProperty.UnsetValue;
}
public virtual object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return DependencyProperty.UnsetValue;
}
}
public class VisibilityConverter : ConverterBase
{
public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return ((bool)value ^ (parameter as bool? == true)).ToVisibility();
}
}