2013-04-30 62 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