我需要能够将放置在RadGridView行上的RadButton的Visibility属性多重绑定到GridViewRow的“IsSelected”属性和ViewModel上的Public属性(在本例中称为“OtherValue”)。这样做的目的是仅显示所选行上的[删除]按钮,但也可以根据某些业务规则通过ViewModel中的自定义代码覆盖它。
有关多路转换器绑定语法的任何建议吗?我目前有以下内容:
<telerik:GridViewDataColumn>
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<telerik:RadButton Width="70"
Command="telerik:RadGridViewCommands.Delete"
CommandParameter="{Binding}"
Content="Delete">
<telerik:RadButton.Visibility>
<MultiBinding Converter="{StaticResource BooleanToVisibilityMultiValueConverter}">
<Binding Path="IsSelected" />
<Binding Path="OtherValue" />
</MultiBinding>
</telerik:RadButton.Visibility>
</telerik:RadButton>
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
</telerik:GridViewDataColumn>
答案 0 :(得分:0)
警告:我从未使用任何Telerik控件。这个答案可能是正确的 - ish 而不是死钱,但应该有希望给你一些概念:
<DataTemplate>
<telerik:RadButton Width="70" Command="telerik:RadGridViewCommands.Delete" CommandParameter="{Binding}" Content="Delete">
<telerik:RadButton.Visibility>
<MultiBinding Converter="{StaticResource BooleanToVisibilityMultiValueConverter}">
<Binding ElementName="MyRadGridView", Path="Rows[0].IsSelected" />
<Binding Path="OtherValue", RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type telerik:RadGridView}} />
</MultiBinding>
</telerik:RadButton.Visibility>
</telerik:RadButton>
</DataTemplate>
您需要为RadGridView提供一个名称,该名称将替换MyRadGridView。据我所知,你可以使用Row的索引绑定一个Row IsSelected属性。
由于您的Button在DataTemplate中,我认为您可能需要使用RelativeSource / FindAncestor挖掘回DataContext。如果它没有绑定RadGridView,你总是可以尝试用Window / UserControl替换它/无论你的RadGridView是什么。