我正在使用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,我需要再次点击在那里设置键盘焦点,然后开始写作!
发布于 2012-12-15 20:38:12
我不确定这是不是一个很好的特性。你可能不能选择多个单元格。不管怎样处理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事件。
https://stackoverflow.com/questions/13892012
复制相似问题