Отказ от ответственности: не то, что я не могу решить проблему, но мне любопытно, почему проблема возникает в первую очередь.
Типичный сценарий: размещение нескольких вещей в шаблоне данных в некотором теге. Конечная цель заключается в том, чтобы внутри этого тега был массив элементов управления. Поскольку я привязываюсь к свойству object
type, мне нужно использовать конвертер.
<Button Content="Test" >
<Button.Tag>
<MultiBinding Converter="{StaticResource mbc}">
<Binding ElementName="sdbr"/>
<Binding ElementName="ldbr"/>
</MultiBinding>
</Button.Tag>
</Button>
The mbc
- это экземпляр преобразователя этого типа:
public class MultiConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
return values; //<--This here is a line of interest
}
... ConvertBack is default;
Теперь проблема: даже если вход values
содержит правильные данные, Tag
получает new object[]{null, null}
в качестве результирующего значения.Пока я возвращаю что-то отличное от входного массива - он работает просто отлично.Все они работают правильно:
return values.Clone(); /*option a*/
return new List<object>(values); /*option b*/
return values.Cast<Whatever>().ToList(); /*option c*/
Я проверил, но нигде не нашел требования вернуть что-либо, кроме входного значения в MSDN.И кроме того, даже если такая вещь существует, с какой стати она возвращает мне массив надлежащей длины, но с null
s внутри?!