I was updating some value converters in my converters GitHub repos. PutridParrot.Presentation.Converters and realised I had been returning a null in situations where I really should have been returning DependencyProperty.UnsetValue.
Generally we’ll either return a valid value from a converter or one of the following
- null
- DependencyProperty.UnsetValue
- Binding.DoNothing
- The original value
The documentation (see References) states that when a null is returned then a “valid null value is used”.
However we may actually prefer that the FallbackValue is used (if supplied) instead, hence we can return a DependencyProperty.UnsetValue.
In cases where we neither want a value returned and do not want the FallbackValue to be called, then we return the Binding.DoNothing.
Obviously, in situations where you do not know what to do with a binding value, it might be better to simply return the value passed into the Convert method.
References
IValueConverter.Convert(Object, Type, Object, CultureInfo) Method