ScrollViewer不会触发KeyUp事件

时间:2009-12-24 08:44:15

标签: event-handling scrollviewer

我正在使用Syncfusion的TreeViewAdv控件。我附加了一个KeypUp事件处理程序,它按预期工作。每当我发布密钥时,都会触发该事件。但是,一旦我将它包装在ScrollViewer中,事件就不会被触发。我必须将事件处理程序移动到ScrollViewer本身以捕获事件。我还检查了PreviewKeyUp事件,在ScrollViewer中它被触发并且Handled为false。但TreeViewAdv的PreviewKeyUp根本没有被触发。

我尝试用StackPanel替换ScrollViewer,一切都很好。因此,似乎ScrollViewer会阻止事件传播到其内容。如何在ScrollViewer中处理事件?

1 个答案:

答案 0 :(得分:0)

我可以看到只有当您通过鼠标选择项目然后尝试捕获KeyUp和KeyDown事件时才会发生这种情况。当您仅通过键盘导航项目时,例如使用Tab键,这些事件会正常触发。

这是TreeViewAdv控件中的已知问题,而Syncfusion修复此问题。他们承诺将在2009年1月底发布的即将发布的Vol1 2010中包含类似修复程序。

作为一种变通方法,您可以使用此代码段来接收事件通知。

< Syncfusion:TreeViewAdv.Resources>

< Style TargetType =“{x:Type syncfusion:TreeViewItemAdv}”>             < EventSetter Event =“MouseLeftButtonUp” 处理机= “TreeViewItemAdv1_MouseLeftButtonUp”/> < /样式和GT; < / Syncfusion:TreeViewAdv.Resources>

C#中的事件处理程序

private void TreeViewItemAdv1_MouseLeftButtonUp(object sender,MouseButtonEventArgs e)         {         TreeViewItemAdv item =(发送者为TreeViewItemAdv); 如果(item!= null) { item.Focus(); }         }

谢谢,

马德汉