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

时间:2012-04-19 22:13:52

标签: c# wpf

我正在为我支持拖放的树视图实现拖放操作。

树中包含文件夹和文件。当我拖动文件夹底部的25%时,我希望它重新排序。当我拖过treeviewitem的前75%时,我希望它将内容删除到文件夹中。

如何确定我在元素中的位置?这是我的尝试不起作用:

    private bool ShouldReorder(TreeViewItem targetItem)
    {
        var relativePosition = PointToScreen(Mouse.GetPosition(targetItem));
        return relativePosition.Y/targetItem.ActualHeight < 0.25;
    }

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

2 个答案:

答案 0 :(得分:1)

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

Parent.PointToClient(screenpt) ;

答案 1 :(得分:0)

我使用以下代码来使用全局鼠标事件(无论窗口焦点如何,此代码也可以获取全局x / y位置数据):

http://www.codeproject.com/Articles/7294/Processing-Global-Mouse-and-Keyboard-Hooks-in-C

我的课程:

http://www.codeproject.com/Articles/347795/Inactivity-Logoff