Wpf 在ItemsControl中开始拖动项目时,选择了不正确的项目

Wpf 在ItemsControl中开始拖动项目时,选择了不正确的项目,wpf,drag-and-drop,itemscontrol,Wpf,Drag And Drop,Itemscontrol,我正在为WPF实现一个DragDrop框架(顺便说一句,您可以找到) 我有一个问题,当用户在ItemsControl上向下移动s时,我们无法立即知道他们是否打算单击该项来选择它,或者开始拖动。如果用户单击某个项目,然后快速移动光标,则在确定拖动已开始之前,可以选择除单击项目以外的其他项目(特别是如果单击该项目会在短时间内冻结UI以加载数据等) 我认为这个问题在WinForms中不存在,因为按住按钮拖动鼠标不会导致另一个项目被选中-选择只在发生单击的项目上进行 在PreviewMouseDown事

我正在为WPF实现一个
DragDrop
框架(顺便说一句,您可以找到)

我有一个问题,当用户在
ItemsControl
上向下移动
s时,我们无法立即知道他们是否打算单击该项来选择它,或者开始拖动。如果用户单击某个项目,然后快速移动光标,则在确定拖动已开始之前,可以选择除单击项目以外的其他项目(特别是如果单击该项目会在短时间内冻结UI以加载数据等)

我认为这个问题在WinForms中不存在,因为按住按钮拖动鼠标不会导致另一个项目被选中-选择只在发生单击的项目上进行

PreviewMouseDown
事件中,我可以设置
e.Handled
属性以防止选择另一个项目,如果用户确实想要开始拖动,但实际上无法选择该项目,则该属性可以正常工作


有人知道如何处理这个问题吗?

存储/使用他们最初按下鼠标的点,并使用该点来解析要拖动的项目。

存储/使用他们最初按下鼠标的点,并使用该点来解析要拖动的项目。

我正在这样做,但是,要拖动的项与ItemsControl中选择的项不匹配。让用户困惑的是:他们实际上在拖动哪个项目?我正在这样做,但是被拖动的项目与ItemsControl中选择的项目不匹配。让用户困惑的是:他们实际上在拖动哪个项目?