public bool TryGetValueConverter(Type source, out IValueConverter result)
{
if (!converterLookup.TryGetValue(source, out result))
{
result = valueConverters.FirstOrDefault(x => x.CanHandleType(source));
converterLookup.Add(source, result);
}
return result != null;
}