擴展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



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM