C# 如何确定鼠标相对于父元素悬停的位置

C# 如何确定鼠标相对于父元素悬停的位置,c#,wpf,C#,Wpf,我正在为支持拖放的treeview实现拖放 树中有文件夹和文件。当我拖动文件夹底部25%的区域时,我希望它重新排序。当我拖动到treeviewitem顶部75%的位置时,我希望它将内容放到文件夹中 如何确定我在元素中的位置?以下是我的尝试,但没有成功: private bool ShouldReorder(TreeViewItem targetItem) { var relativePosition = PointToScreen(Mouse.GetPositio

我正在为支持拖放的treeview实现拖放

树中有文件夹和文件。当我拖动文件夹底部25%的区域时,我希望它重新排序。当我拖动到treeviewitem顶部75%的位置时,我希望它将内容放到文件夹中

如何确定我在元素中的位置?以下是我的尝试,但没有成功:

    private bool ShouldReorder(TreeViewItem targetItem)
    {
        var relativePosition = PointToScreen(Mouse.GetPosition(targetItem));
        return relativePosition.Y/targetItem.ActualHeight < 0.25;
    }
private bool应该重新排序(TreeViewItem targetItem)
{
var relativePosition=指向屏幕(Mouse.GetPosition(targetItem));
返回相对位置.Y/targetItem.ActualHeight<0.25;
}

此代码的相对位置为负值。

将其转换为屏幕坐标后,可以将其转换回父控件的客户端坐标

Parent.PointToClient(screenpt) ;

我使用以下代码使用全局鼠标事件(此代码还可以获取全局x/y位置数据,而不考虑窗口焦点):

对于我的计划,请访问: