为什么多重绑定要求返回对象与输入对象不同?

时间:2018-12-05 11:41:28

标签: c# wpf binding multibinding imultivalueconverter

免责声明:并不是说我不能解决问题,但我很好奇为什么问题首先出现。

一个典型的场景:将数据模板中的一堆东西放到某个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在内的适当长度的数组呢?!

0 个答案:

没有答案