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

问题描述:

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

代码snippet`

< 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/> 
` 
+0

你目前试过什么?代码示例? –

+0

Hi @GingerNinja请在我的网格中找到我使用的代码 – James

+0

您是否尝试过使用ControlTemplates? –

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

<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> 

与此我无法更改与鼠标和键盘的复选框。