2013-04-30 21 views
0

我有一個實例方法OnKeyDownHandler:KeyDownHandler-事件在DataGrid和列表框

private void OnKeyDownHandler(object sender, KeyEventArgs e) 
    { 
     if (e.Key == Key.Delete) 
     { 
      if (sender == listBox) 
       listItemDelete(); 
      if (sender == dataGrid) 
       dataGridItemDelete(); 
     } 
    } 

我有一個DataGridListBox。現在我想刪除一個項目,當我按Delete-Key和一個項目被選中。

現在我們通過以下幾種情況:

我在listBox和重點上有一個SelectedItem。當我按下Deletey-Key時,會觸發OnKeyDownHandler-Event

我有一個SelectedItem在我的dataGrid和它的重點。當我按下Delete-Key時,OnkeyDownHandler-Event不會被觸發。

當我按下任何其他鍵如Paste-Key時,OnKeyDownHandler-Event將被觸發。

當我按我的dataGrid上的Delete-Key時,不會調用該事件。這是爲什麼?我無法解釋它。


編輯:XAML碼

<DataGrid KeyDown="OnKeyDownHandler" /> 

<ListBox KeyDown="OnKeyDownHandler" /> 
+0

你的XAML看起來像什麼事件掛鉤? – Thelonias 2013-04-30 13:00:01

回答

2

KeyDown事件您DataGrid正在由活動單元格處理。 DataGridView控件正在處理事件,而不是您的代碼隱藏。對於DataGrid,您可以嘗試使用PreviewKeyDown事件而不是KeyDown事件。

+0

謝謝你的工作! – 2013-04-30 13:08:29

+0

很高興爲你效勞。如果您的問題得到解答,請將其標記爲已解決。 – Thelonias 2013-04-30 13:23:53

+0

是的,我必須等待2分鐘才能打標,我離開了鍵盤:) – 2013-04-30 13:31:01

0

我猜你OnKeyDownHandler連接到列表框,而不是到DataGrid。你需要在你像dataGrid.OnKeyDown += OnKeyDownHandler; Window_Loaded或PAGE_LOADED或XAML

<DataGrid ... OnKeyDown="OnKeyDownHandler" ... ></DataGrid> 
+0

我已使用XAML代碼編輯我的問題。爲什麼它與其他密鑰(如Paste-Key)一樣工作? – 2013-04-30 13:06:44