我有一个非常棘手的情况,我将数据绑定到telerik radgridview,其中一切正常,直到我尝试根据另一列的检查值绑定一个复选框列的可见性。我尝试过以下方法:
<telerik:RadGridView ShowGroupPanel="False" AutoGenerateColumns="False" ItemsSource="{Binding ParametersFilterConfigurations}">
<telerik:RadGridView.Columns>
<telerik:GridViewDataColumn IsFilterable="False" IsGroupable="False" IsSortable="False" DataMemberBinding="{Binding FilterElementName}" Header="Parameter Name" />
<telerik:GridViewCheckBoxColumn IsFilterable="False" IsGroupable="False" IsSortable="False" DataMemberBinding="{Binding CanView}" Header="Viewable"/>
<telerik:GridViewCheckBoxColumn IsVisible="{Binding CanView}" IsFilterable="False" IsGroupable="False" IsSortable="False" DataMemberBinding="{Binding CanFilterBy}" Header="Filterable" />
</telerik:RadGridView.Columns>
</telerik:RadGridView>
当我运行此WPF时,尝试从主datacontext找到最后一列的IsVisible =“{Binding CanView”,并且offcourse失败并显示以下内容:
System.Windows.Data错误:40:BindingExpression路径错误:'object'''MainWindow'(Name ='')'上找不到'CanView'属性。 BindingExpression:路径= CanView; DataItem ='MainWindow'(Name =''); target元素是'GridViewCheckBoxColumn'(HashCode = 53813616); target属性为'IsVisible'(类型'Boolean')
我该如何解决这个问题?请帮忙。
答案 0 :(得分:1)
我建议在“可过滤”列中使用单元格模板。由于“CanView”属性每行都会更改,因此无法将另一整列的可见性绑定到该行。您可以执行的操作始终显示列,但根据需要显示/隐藏该列中的复选框。即,像这样:
<telerik:GridViewColumn>
<telerik:GridViewColumn.CellTemplate Header="Filterable">
<DataTemplate>
<CheckBox Visibility="{Binding CanView,Converter={StaticResource BoolToVisConverter}"
IsChecked="{Binding CanFilterBy}"
/>
</DataTemplate>
</telerik:GridViewColumn.CellTemplate>
</telerik:GridViewColumn>