我正在使用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
,我需要再次点击以设置键盘焦点并开始写作!
答案 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事件。