我已经在自定义列的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/>
`
答案 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>
有了这个,我无法用鼠标和键盘更改复选框。