你的位置:首页 > ASP.net教程

[ASP.net教程]扩展WPF的DataGrid按方向键移动焦点

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