如何限制键盘操作来更改复选框值?

时间:2017-09-20 12:27:48

标签: wpf checkbox wpfdatagrid

我已经在自定义列的DataGrid单元格中加载了复选框,我想限制该列的编辑操作以便我在外部自定义列,然后将复选框属性IsHitTestVisible设为false以限制使用鼠标对复选框进行编辑操作。但是我可以使用键盘(Space键)更改复选框状态。如何避免这种情况并使复选框完全处于不可编辑状态。

代码段

< CustomDataGrid x:Name="dataGrid"
                   Editing="True" IsReadOnly="True"
                   Grouping="True" 
                   AutoPopulateColumns="False"
                   DataSource="{Binding Path=OrdersDetails}">
   < CustomDataGrid.Columns>
//I like to restrict the editing for the Closed column, Like IsReadOnly property of the Text-Box,
I am able to achieve this using the IsHitVisible as false,This helps only for mouse click But I am not able to restrict the key opeartion 
           <MyDataGridCheckBoxColumn Text="Closed"  Items="{Binding IsClosed}" />
   < CustomDataGrid.Columns>
 <CustomDataGrid/>
`

1 个答案:

答案 0 :(得分:0)

虽然不清楚所有自定义列和要求。这应该能够通过给定列的模板来解决。我嘲笑了一个简单的例子:

    <DataGrid ItemsSource="{Binding Tester}" Width="280">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Name" Width="100" IsReadOnly="True" Binding="{Binding Name}"/>
            <DataGridTextColumn Header="Value" Width="100" IsReadOnly="True" Binding="{Binding Value}"/>
            <DataGridTemplateColumn Header="Checked" Width="80">
                <!-- Should be able to put a similar Template on MyDataGridCheckBoxColumn-->
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <CheckBox IsChecked="{Binding IsChecked}" IsHitTestVisible="False">
                        </CheckBox>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>
    </DataGrid>

有了这个,我无法用鼠标和键盘更改复选框。