使用CommandParameters和MultiBindings?

时间:2011-11-28 00:55:16

标签: wpf binding mvvm mvvm-light wpfdatagrid

是否可以在多重绑定中使用CommandParameter =“{Binding}”? 我试图在数据网格中这样做。

<CheckBox.CommandParameter>
    <MultiBinding Converter="{StaticResource CDetailConverter}">
        <Binding Path ="IsChecked" ElementName="chkSelection"/>                                        
        <Binding ConverterParameter="{Binding}"/>
    </MultiBinding>
</CheckBox.CommandParameter>

第二个Binding引发错误。

1 个答案:

答案 0 :(得分:2)

简而言之,答案是否定的。

在你的第二个内心Binding中,你设置了ConverterParameter。这有几个问题:

首先,Binding是自己的类,与MultiBinding分开,同时具有ConverterConverterParameter属性。您在此处设置了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}}

希望这有帮助!