当前位置: 代码迷 >> C# >> 扩张WPF的DataGrid按方向键移动焦点
  详细解决方案

扩张WPF的DataGrid按方向键移动焦点

热度:61   发布时间:2016-05-05 02:58:33.0
扩展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


  相关解决方案