Вы можете использовать MarkupExtension, чтобы минимизировать количество требуемого кода xaml.Например:
public class MyConverter: MarkupExtension, IValueConverter
{частный статический MyConverter _converter;
public object Convert(object value, Type targetType,
object parameter, System.Globalization.CultureInfo culture)
{
// convert and return something
}
public object ConvertBack(object value, Type targetType,
object parameter, System.Globalization.CultureInfo culture)
{
// convert and return something (if needed)
}
public override object ProvideValue(IServiceProvider serviceProvider)
{
if (_converter == null)
_converter = new MyConverter();
return _converter;
}
}
В результате вы получите такой синтаксис:
{Binding Converter={conv:MyConverter}}
Этот подход имеет дополнительное преимущество, заключающееся в том, что все ваши конвертеры являются синглетонами.
Эта статья делает большую работу по объяснению концепции и предоставляет пример кода.