WPF的DataGrid默认的移动行为如下:
(1)当前单元格不处于编辑状态时可使用方向键移动焦点。
(2)当前单元格处于编辑状态时不可使用方向键移动焦点;
按Enter键,当前单元格退出编辑状态,焦点向下移动一格;
按Ctrl+Enter键,当前单元格退出编辑状态,焦点向上移动一格;
按Tab键,当前单元格退出编辑状态,焦点向右移动一格,并进入编辑状态;
按Shift+Tab键,当前单元格退出编辑状态,焦点向左移动一格,并进入编辑状态;
“运营管理3.0″的用户普遍电脑操作水平低下,Office是它们操作的最多也是最智能的软件,它们认为所有的软件都必须是Office一样地操作,否则就给差评,所以它们要求”运营管理”的操作方式尽量与Excel相同.
为了实现WPF的DataGrid的移动方式与Excel相同,需要重写DataGrid的OnPreviewKeyDown事件:
public class ExDataGrid : DataGrid { protected override void OnPreviewKeyDown(KeyEventArgs e) { if (e.Key == Key.Left || e.Key == Key.Right || e.Key == Key.Up || e.Key == Key.Down) { try { base.CommitEdit(); } catch (Exception ex) { base.CancelEdit(); string mess = ex.Message; if (ex.InnerException != null) mess += "nn" + ex.InnerException.Message; MessageBox.Show(mess); } } base.OnPreviewKeyDown(e); } }
然后在使用DataGrid的地方换成已重写的ExDataGrid就可以了.
转载自:http://www.yuzifu.net/index.php/2010/11/%E6%89%A9%E5%B1%95wpf%E7%9A%84datag