默认情况下,F2会激活编辑,双击并在所选单元格中键入内容。 如何启用/禁用这些(其中一些)编辑触发器?
答案 0 :(得分:3)
datagrid.KeyDown += new KeyEventHandler(datagrid_KeyDown);
void datagrid_KeyDown(object sender, KeyEventArgs e)
{
//obviously you'll have to add some code here
//if(!datagridIsInEditMode) then
if (Keyboard.IsKeyDown(Key.F2))
datagrid.BeginEdit();
else
e.Handled = true;
}
答案 1 :(得分:2)
我认为最干净的方法是单独留下datagrid的行为,它知道它在做什么,并在edting模板中创建自己的控件。让我们调用它(供参考)CustomTextBox。让CustomTextBox执行您喜欢的操作,例如仅响应F2键等。这样您就不会在数据网格中创建奇怪的行为,并在自定义控件中封装自定义行为。
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock DataContext="{Binding SomeProperty}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<yourNamespace:CustomTextBox DataContext="{Binding SomeProperty}" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>