В WPF существует три вида привязок: Binding, PriorityBinding и MultiBinding. Все три привязки наследуются от одного базового класса BindingBase. PriorityBinding и MultiBinding позволяют к одному свойству привязать несколько других привязок, например:
<MultiBinding Converter="{StaticResource JoinStringConverter}" ConverterParameter=" ">
<Binding Path="FirstName" />
<Binding Path="MiddleName" />
<Binding Path="LastName" />
</MultiBinding>
Исходный код класса JoinStringConverter
public class JoinStringConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
var separator = parameter as string ?? " ";
return string.Join(separator, values);
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
var separator = parameter as string ?? " ";
return (value as string)?.Split(new[] { separator }, StringSplitOptions.None).Cast<object>().ToArray();
}
}
Список привязок MultiBinding-а — это коллекция типа Collection<BindingBase>. Логично было бы предположить, что внутри MultiBinding-а можно использовать еще один MultiBinding.
Читать полностью »