如何通过单击将焦点设置为WPF数据网格的选定单元格?

时间:2012-12-15 12:06:36

标签: wpf wpfdatagrid

我正在使用WPFDataGrid控件,并希望通过单击来将键盘焦点设置为选定的Cell。因此,用户必须双击单元格以开始编写。我已经尝试过代码:

<Style TargetType="{x:Type DataGridCell}" x:Key="DataGridCellStyle">
   <Setter Property="IsTabStop" Value="True" />
   <Setter Property="Focusable" Value="True" />    
   <Style.Triggers>
      <Trigger Property="IsKeyboardFocusWithin" Value="True">
        <Setter Property="IsEditing" Value="True" />
      </Trigger>
   </Style.Triggers>
</Style>

当我点击一个单元格时,它会转到Editmode,我需要再次点击以设置键盘焦点并开始写作!

1 个答案:

答案 0 :(得分:2)

我不确定这是否是一个不错的功能。您可能无法选择多个单元格。无论如何处理OnCurrentCellChanged事件

void DG1_OnCurrentCellChanged(object sender, SelectedCellsChangedEventArgs e)
{
    DataGrid dg=(Datagrid)sender;
    dg.BeginEdit();
}

BeginEdit()导致DataGridPreparingCellForEdit事件发生,我认为您应该处理该事件:

private void dg_PreparingCellForEdit(object sender,  DataGridPreparingCellForEditEventArgs e)
{
TextBox tb = e.EditingElement as TextBox;
if (tb != null)
   {
       tb.Focus();
       //you can set caret position and ...
   }
}

另外,您可以处理BeginningEdit事件。