0

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

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

4

1 回答 1

0

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

这是 TreeViewAdv 控件中的已知问题,Syncfusion 修复了此问题。他们承诺将在他们即将发布的 Vol1 2010 中包含类似修复,该版本计划于 2009 年 1 月结束。

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

<Syncfusion:TreeViewAdv.Resources>

<Style TargetType="{x:Type syncfusion:TreeViewItemAdv}"> <EventSetter Event="MouseLeftButtonUp" Handler="TreeViewItemAdv1_MouseLeftButtonUp"/> </Style> </Syncfusion:TreeViewAdv.Resources>

C# 中的事件处理程序

private void TreeViewItemAdv1_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { TreeViewItemAdv item= (sender as TreeViewItemAdv); If(item != null) { item.Focus(); } }

谢谢,

马丹

于 2010-01-11T11:26:59.520 回答