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); } } View Code
然後在使用DataGrid的地方換成已重寫的ExDataGrid就可以了.
轉載自:http://www.yuzifu.net/index.php/2010/11/%E6%89%A9%E5%B1%95wpf%E7%9A%84datag