WPF&;Telerik RadTreeView:如何在拖动时拦截ItemSelected事件?

WPF&;Telerik RadTreeView:如何在拖动时拦截ItemSelected事件?,wpf,drag-and-drop,telerik,Wpf,Drag And Drop,Telerik,我有一个Telerik RadTreeView 我正在使用ItemSelected事件打开所选项目的详细视图 我正在使用拖放功能,按照您的期望,重新排列我的树中项目的层次结构。没什么特别的 问题是,当我在我的树中单击拖动项目时,它会打开该项目的详细视图,因为ItemSelected事件被触发。在触发ItemSelected事件之前,是否有一个点可以确定某个项目正在被拖动,以便我可以取消或拦截ItemSelected事件并阻止显示详细视图?在DragDropManager可以拦截任何事件之前,It

我有一个Telerik RadTreeView

我正在使用ItemSelected事件打开所选项目的详细视图

我正在使用拖放功能,按照您的期望,重新排列我的树中项目的层次结构。没什么特别的


问题是,当我在我的树中单击拖动项目时,它会打开该项目的详细视图,因为ItemSelected事件被触发。在触发ItemSelected事件之前,是否有一个点可以确定某个项目正在被拖动,以便我可以取消或拦截ItemSelected事件并阻止显示详细视图?

在DragDropManager可以拦截任何事件之前,ItemSelected事件将被触发,因此,无法知道您将要完成的操作是拖放操作。因此,此处无法使用所选项目

然而,一切都没有失去。ItemClick事件仅在MouseUp上触发,因此,在DragDrop操作期间不会触发。DragDropManager可以方便地处理事件,这样当您松开鼠标按钮时,它不会在Drop上触发

因此,在
ItemClick
事件中执行您的ItemSelected行为(它与ItemSelected具有相同的事件签名,因此您可以重命名它以保持语义正确)

XAML

<MyTreeView ItemClick="MyTreeView_OnItemClick" />

现在,您的ItemSelected进程将向用户显示为在选择时触发,但如果您拖动,选择将被拦截并替换为拖放功能。

ItemSelected事件将在DragDropManager可以拦截任何事件之前触发,因此,无法知道您将要完成的操作是拖放操作。因此,此处无法使用所选项目

然而,一切都没有失去。ItemClick事件仅在MouseUp上触发,因此,在DragDrop操作期间不会触发。DragDropManager可以方便地处理事件,这样当您松开鼠标按钮时,它不会在Drop上触发

因此,在
ItemClick
事件中执行您的ItemSelected行为(它与ItemSelected具有相同的事件签名,因此您可以重命名它以保持语义正确)

XAML

<MyTreeView ItemClick="MyTreeView_OnItemClick" />
现在,您的ItemSelected进程将向用户显示为在选择时触发,但如果您拖动,则选择将被拦截并替换为拖放功能