是否可以在多重绑定中使用CommandParameter =“{Binding}”? 我试图在数据网格中这样做。
<CheckBox.CommandParameter>
<MultiBinding Converter="{StaticResource CDetailConverter}">
<Binding Path ="IsChecked" ElementName="chkSelection"/>
<Binding ConverterParameter="{Binding}"/>
</MultiBinding>
</CheckBox.CommandParameter>
第二个Binding引发错误。
答案 0 :(得分:2)
简而言之,答案是否定的。
在你的第二个内心Binding
中,你设置了ConverterParameter
。这有几个问题:
首先,Binding
是自己的类,与MultiBinding
分开,同时具有Converter
和ConverterParameter
属性。您在此处设置了ConverterParameter
属性,但未设置Converter
属性。请注意,ConverterParameter
会传递给Binding's
指定的转换器,无论它是否在MultiBinding
内使用。如果您要在此处添加Converter
,则转换器将通过指定的ConverterParameter
。
您可能要做的是在外部ConverterParameter
上设置MultiBinding
,该<CheckBox.CommandParameter>
<MultiBinding Converter="{StaticResource CDetailConverter}" ConverterParameter="{Binding }">
<Binding Path ="IsChecked" ElementName="chkSelection"/>
</MultiBinding>
</CheckBox.CommandParameter>
也具有此属性:
ConverterParameter
如果您尝试此操作,则会很快发现Binding
不能成为DependencyProperty
表达式的目标,因为它不是CommandParameter
。
由于您无法绑定到IMultiConverter
,因此典型的解决方法是修改<CheckBox.CommandParameter>
<!-- CDetailConverter updated to expect an additional value in the values array -->
<MultiBinding Converter="{StaticResource CDetailConverter}">
<Binding Path ="IsChecked" ElementName="chkSelection"/>
<Binding />
</MultiBinding>
</CheckBox.CommandParameter>
以接受其他值,并通过绑定表达式提供此值:
{{1}}
希望这有帮助!