2011-05-04 67 views
3

我想在datagrid的最後一個單元格上按'TAB'鍵時,在我的數據網格中添加新行。如何在WPF dataGrid中的TAB鍵上添加新行

我正在使用MVVM模式來執行此操作。我有一個解決方案來了,我assinged Tab鍵將輸入數據網格的結合:

<DataGrid.InputBindings> 
     <KeyBinding Command="{Binding Path=InsertNewLineCommand}" Key="Tab"></KeyBinding> 
    </DataGrid.InputBindings> 

並添加以下代碼InsertNewLineCommand:

private void ExecuteInsertNewLineCommand() 
    { 
     //Checked is SelectedCell[0] at last cell of the datagrid 
     { 
      InsertNewLine(); 
     } 
    } 

但問題是關於添加鍵綁定=」選項卡上的我的正常選項卡功能(移動到下一個單元,因此...)

+0

您似乎已經被檢查,看是否SelectedCell是最後一個,爲什麼不後添加一個else,並移動SelectedCell到以編程方式在DataGrid中創建下一個單元格? – Tyrsius 2011-09-02 18:04:34

回答

1

只需確定您是否在最後一列然後執行您的命令。

我使用PreviewKeyDown,所以我可以測試邏輯,但是你可以把它放在你的executeCommand方法中。無論如何,這應該讓你開始:

<DataGrid PreviewKeyDown="DataGrid_PreviewKeyDown" SelectionUnit="Cell" .... 

private void DataGrid_PreviewKeyDown(object sender, KeyEventArgs e) 
{ 
    if (!Keyboard.IsKeyDown(Key.Tab)) return; 
    var dataGrid = (DataGrid) sender; 

    var current = dataGrid.Columns.IndexOf(dataGrid.CurrentColumn); 
    var last = dataGrid.Columns.Count - 1; 

    if (current == last) 
     ExecuteInsertNewLineCommand(); 

}