使WPF数据网格上的各个复选框不可见

时间:2010-01-02 14:44:18

标签: wpf mvvm wpfdatagrid

我的视图模型中有一个绑定到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>

1 个答案:

答案 0 :(得分:1)

对于Visibility函数方面,您需要一个BooleanToVisbility转换器,您将使用它并将hte datagrid的Visible状态绑定到datacontext对象中的Enabled属性。

此外,前景色可以完全相同的方式处理。

编辑:添加转化器链接