使用多绑定的绑定转换器参数

10

是否可以在MultiBinding中的ConverterParameter中添加Binding?像这样:

    <HierarchicalDataTemplate DataType="{x:Type Elements:RootElement}">
        <HierarchicalDataTemplate.ItemsSource>
            <MultiBinding Converter="{StaticResource filterConverter}" ConverterParameter="{Binding IsFilterd}">
                <Binding Path="Children"/>
                <Binding Path="FilterChildren"/>
            </MultiBinding>
        </HierarchicalDataTemplate.ItemsSource>
        <TextBlock Text="{Binding Name}" FontWeight="Normal"/>
    </HierarchicalDataTemplate>

其中IsFiltered是应用模板的对象上的一个属性。

我总是得到一个XAML解析器错误,指出在ConverterParameter中绑定不正确/不允许...

还有其他方法可以实现吗?

问候,

Jürgen

2个回答

13

ConverterParameter不是 DependencyProperty,因此无法通过数据绑定对其进行操作。

为什么不向 MultiBinding 添加另一个绑定?将 IsFiltered 作为另一个值发送:

        <MultiBinding Converter="{StaticResource filterConverter}" >
            <Binding Path="Children"/>
            <Binding Path="FilterChildren"/>
            <Binding Path="IsFiltered" />
        </MultiBinding>

@Elad Katz,我有一个情况,我需要绑定一个双向属性,并且让另一个属性在转换中起作用,但是我不能为另一个属性设置双向绑定,所以我需要将其作为参数传递。 - eran otzap

2

如果您有要传递给MultiConverter的纯文本,请像下面代码中我所做的那样添加ConverterParameter。

原始答案:最初的回答

<MultiBinding Converter="{StaticResource SortingDirectionImageMultiConverter}">
    <Binding Path="SortingColumnIdentifier"/>
    <Binding Path="IsSortingAscending"/>
    <MultiBinding.ConverterParameter>txtBlockConfigNumber</MultiBinding.ConverterParameter>
</MultiBinding>

虽然这段代码片段可能解决了问题,但包括解释有助于提高您的回答质量。请记住,您正在为未来的读者回答问题,而这些人可能不知道您提出代码建议的原因。 - Stefan Crain
你说得对,我添加了一点注释。我认为现在已经很容易理解了。 - Michael Bernhard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接