如何限制键盘操作以更改复选框值?
问题描述:
我已经加载自定义列的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/>
`
答
虽然不清楚您所有的自定义列和要求。这应该能够用给定列的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>
与此我无法更改与鼠标和键盘的复选框。
你目前试过什么?代码示例? –
Hi @GingerNinja请在我的网格中找到我使用的代码 – James
您是否尝试过使用ControlTemplates? –