WPF DataGrid CheckBox单击一下选中/取消选中

时间:2016-02-01 07:08:20

标签: wpf

我需要在单击中使用空格键检查和取消选中CheckBox。我尝试如下。

<my:DataGridTemplateColumn Header="Chk" MinWidth="40">      
<my:DataGridTemplateColumn.CellTemplate>                            
<DataTemplate>                                
<CheckBox IsChecked="{Binding Path=SELECT,UpdateSourceTrigger=PropertyChanged}" Name="ChkSelect" 
Click="ChkSelect_Click" KeyDown="ChkSelect_KeyDown"/>                            
</DataTemplate>                        
</my:DataGridTemplateColumn.CellTemplate>                    
</my:DataGridTemplateColumn>

使用鼠标,我只需点击一下即可选中/取消选中。 但同样的事情我无法使用空格键进行操作。 按键事件仅在我按Tab键两次时才会触发。 如何使用空格键在一次单击中检查/取消选中CheckBox?

1 个答案:

答案 0 :(得分:0)

尝试将FocusManager。FocusedElement添加到checkbox,以便关注以下复选框:

     <CheckBox FocusManager.FocusedElement="{Binding RelativeSource={RelativeSource Self}}"
     IsChecked="{Binding Path=SELECT,UpdateSourceTrigger=PropertyChanged}" 
     Name="ChkSelect" Click="ChkSelect_Click" KeyDown="ChkSelect_KeyDown"/>

修改

使用cellTemplate添加CellEditingTemplate,如:

<my:DataGridTemplateColumn.CellEditingTemplate>
  <DataTemplate>
     <CheckBox IsChecked="{Binding Path=SELECT,UpdateSourceTrigger=PropertyChanged}" Name="ChkSelect" Click="ChkSelect_Click" KeyDown="ChkSelect_KeyDown"/>     
  </DataTemplate>
</my:DataGridTemplateColumn.CellEditingTemplate>

当您在DataGrid上进入编辑模式时,只要您到达包含它的单元格(使用标签页),您就会关注此复选框。

编辑2:

您也可以尝试使用DataGridCheckBoxColumn代替DataGridTemplateColumn<DataGridCheckBoxColumn Header="Chk" Binding="{Binding Path=SELECT,UpdateSourceTrigger=PropertyChanged}" /> 仅用于复选框。例如:

var jsoninviteelist= JsonConvert.SerializeObject(inviteelist);
var jsonfriendcircle = JsonConvert.SerializeObject(friendcircle);
await App.azure_rendezvous_mobile_service_3Client.InvokeApiAsync("saveinvite",new JObject(new JProperty("jsoninviteelist",jsoninviteelist),new JProperty("jsonfriendcircle", jsonfriendcircle)));