I have the following XAML code:
<TextBox Text="Image.Bytes" IsReadOnly="True"/>
<TextBox IsReadOnly="True">
<TextBox.Text>
<MultiBinding Converter="{StaticResource ConcatTextConverter}" ConverterParameter="x">
<Binding Path="Image.Width"/>
<Binding Path="Image.Height"/>
</MultiBinding>
</TextBox.Text>
</TextBox>
The ConcatTextConverter is a simple converter doing as follows:
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
string result = string.Empty;
string separator = parameter?.ToString() ?? "";
if(values?.Any() == true)
{
result = string.Join(separator, values);
}
return result;
}
The Problem happens, when property "Image" is null. The first textbox just shows nothing as whished.
The second, however, shows "DependencyProperty.UnsetValue}x{DependencyProperty.UnsetValue}"
The values given into the converter are of type: values[0].GetType() {Name = "NamedObject" FullName = "MS.Internal.NamedObject"} System.Type {System.RuntimeType} Unfortunately I can't acces to this type MS.Internal.NamedObject to filter it in the converter in case of happening.
Now the Question is: What is the best way to prevent calling the converter in first place, when some object in the binding chain is null? - Or secondly: what would be the best approach to identify such "values" in the converter?