我正在使用Syncfusion的TreeViewAdv控件。我附加了一个KeypUp事件处理程序,它按预期工作。每当我发布密钥时,都会触发该事件。但是,一旦我将它包装在ScrollViewer中,事件就不会被触发。我必须将事件处理程序移动到ScrollViewer本身以捕获事件。我还检查了PreviewKeyUp事件,在ScrollViewer中它被触发并且Handled为false。但TreeViewAdv的PreviewKeyUp根本没有被触发。
我尝试用StackPanel替换ScrollViewer,一切都很好。因此,似乎ScrollViewer会阻止事件传播到其内容。如何在ScrollViewer中处理事件?
答案 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(); } }
谢谢,
马德汉