是否可以在多重绑定(bind)中使用 CommandParameter="{Binding}"?
我正在尝试在数据网格中执行此操作。
<CheckBox.CommandParameter>
<MultiBinding Converter="{StaticResource CDetailConverter}">
<Binding Path ="IsChecked" ElementName="chkSelection"/>
<Binding ConverterParameter="{Binding}"/>
</MultiBinding>
</CheckBox.CommandParameter>
第二个 Binding 引发错误。
最佳答案
简而言之,答案是否定的。
在你的第二个内心 Binding
你设置了ConverterParameter
.这有几个问题:
一、Binding
是独立于 MultiBinding
的自己的类与 Converter
和 ConverterParameter
特性。在这里你设置了ConverterParameter
属性而不设置 Converter
属性(property)。请记住 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
.由于您无法绑定(bind)到
CommandParameter
,典型的解决方法是修改您的 IMultiConverter
接受附加值,并通过绑定(bind)表达式提供此值:<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>
希望这可以帮助!
关于wpf - 使用 CommandParameters 和 MultiBindings?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8290411/