根据wpf中的某些条件禁用datagrid中单元格中的复选框

时间:2011-07-06 09:16:32

标签: wpf wpf-controls styles wpfdatagrid wpftoolkit

我想根据某些条件禁用包含复选框的单元格。我已经实现了这一点,即复选框确实看起来模糊和禁用但是当我点击它时复选框被检查,即它实际上没有被禁用。以下是我试过的代码

在xaml

<toolkit:DataGridCheckBoxColumn Header="Del?" Binding="{Binding DeleteFlag, Mode=Default}" Width="45"  IsReadOnly="True" >
    <toolkit:DataGridCheckBoxColumn.ElementStyle>
        <Style TargetType="{x:Type CheckBox}">
            <Setter Property="IsEnabled" Value="{Binding Path=SortPos, Converter={x:Static my:RowReadOnlyConverter.Instance}}" />
        </Style>
    </toolkit:DataGridCheckBoxColumn.ElementStyle>
</toolkit:DataGridCheckBoxColumn>

上面突出显示的“SortPos”向“RowReadOnlyConverter”类发送一个整数值,该类实现IValueConverter接口,该接口根据某些条件返回bool值。虽然这很好,但是如上所述,复选框不会被禁用。我也尝试过“IsHitTestVisible”而不是“IsEnabled”。有没有人知道可能有效的任何其他财产或除上述之外的任何其他解决方案?

如果您需要查看“RowReadOnlyConverter”类或想要查看该行为的屏幕截图,请告诉我。

1 个答案:

答案 0 :(得分:3)

只是在Xaml文件中写这样的..其中isstopprocess是复选框列,可编辑是基于此列的另一列isstopprocess列是disabiling..ok ..

<my:DataGridTemplateColumn>
    <my:DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <CheckBox Name="chkIstopProcess" IsChecked="{Binding Path=IS_STOP_PROCESS}" IsEnabled="{Binding Path=IsEditable}" MinWidth="50"></CheckBox>
        </DataTemplate>
    </my:DataGridTemplateColumn.CellTemplate>
</my:DataGridTemplateColumn>