我的视图模型中有一个绑定到CollectionViewSource视图的数据网格。 datagrid有一个CheckBoxColumn和三个TextColumns,每个TextColumns都绑定到视图中项目的属性。我在视图项中也有一个bool属性“Enabled”,我想用它来使各个行中的复选框不可见。作为一个额外的好处,也可以改变那些行的其他三列的前景色。但最重要的是不要让用户检查Enabled == false。
行中的复选框编辑:根据下面的Stephen和Andrew的链接,我尝试添加一个值转换器,如下面的代码所示。但由于某种原因,它无法正常工作。我现在正在测试一个CollectionView视图,该视图有90个项目,其中除了其中一个项目之外的所有项目的Enabled属性都是false。所以我期待89行有隐形复选框,1行有可见复选框。但是,所有90行都有可见的复选框。有什么想法吗?
<tk:DataGrid x:Name ="gridClaims"
Grid.Row="0"
AutoGenerateColumns="False"
ItemsSource="{Binding ClaimViewModels.View}"
Width="350"
HrizontalAlignment="Left">
<tk:DataGrid.Resources>
<BooleanToVisibilityConverter x:Key="boolToVis" />
</tk:DataGrid.Resources>
<tk:DataGrid.Columns>
<tk:DataGridCheckBoxColumn
CellStyle="{StaticResource SingleClickEditing}"
Binding="{Binding Path=Selected}"
Visibility="{Binding Path=Enabled, Converter={StaticResource boolToVis}}"
CanUserSort="False" />
</tk:DataGrid.Columns>
答案 0 :(得分:1)
对于Visibility函数方面,您需要一个BooleanToVisbility转换器,您将使用它并将hte datagrid的Visible状态绑定到datacontext对象中的Enabled属性。
此外,前景色可以完全相同的方式处理。
编辑:添加转化器链接