免责声明:并不是说我不能解决问题,但我很好奇为什么问题首先出现。
一个典型的场景:将数据模板中的一堆东西放到某个Tag中。
最终目标是在该标签中包含一系列控件。
当我绑定到object
类型属性时,必须使用转换器。
<Button Content="Test" >
<Button.Tag>
<MultiBinding Converter="{StaticResource mbc}">
<Binding ElementName="sdbr"/>
<Binding ElementName="ldbr"/>
</MultiBinding>
</Button.Tag>
</Button>
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
在内的适当长度的数组呢?!