在RadGridView
中编辑单元格时,转义键的正常行为是退出编辑模式,但将焦点保留在同一单元格上;如果按下回车键,则提交编辑并将焦点提前到下一个可编辑单元格。
我的老板希望我修改行为,这样如果按下了Enter但单元格的值没有改变,就好像它是转义键一样。虽然我已经能够取消提交,但焦点仍然会进入下一个可编辑的单元格,而这不是他想要的。
实现我们所寻求的目标的最佳方式是什么?在此先感谢您的帮助。
答案 0 :(得分:2)
最简单的方法可能是处理编辑PreviewKeyDown
的{{1}}事件,并以编程方式提交编辑并注意其他事项:
TextBox
<强> XAML:强>
private void TextBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
e.Handled = true;
outerGrid.CommitEdit();
}
}
您当然可以创建一个自定义<telerik:GridViewDataColumn>
<telerik:GridViewDataColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</telerik:GridViewDataColumn.CellTemplate>
<telerik:GridViewDataColumn.CellEditTemplate>
<DataTemplate>
<TextBox Text="{Binding Name}" PreviewKeyDown="TextBox_PreviewKeyDown" />
</DataTemplate>
</telerik:GridViewDataColumn.CellEditTemplate>
</telerik:GridViewDataColumn>
类来实现此行为:
GridViewDataColumn
<强>用法:强>
public class CustomColumn : GridViewDataColumn
{
public override FrameworkElement CreateCellEditElement(GridViewCell cell, object dataItem)
{
TextBox textBox = base.CreateCellEditElement(cell, dataItem) as TextBox;
textBox.PreviewKeyDown += (s, e) =>
{
if (e.Key == Key.Enter)
{
e.Handled = true;
DataControl.CommitEdit();
}
};
return textBox;
}
}