无法正确检索WPF鼠标位置

时间:2015-09-03 14:23:42

标签: c# wpf

披露:这是我的第一个WPF应用。请接受我的无知。

在我的WPF应用程序中,我有一个带有网格的ControlTemplate以及其下的各种子代。在代码隐藏中,我使用ControlTemplate动态添加自定义ContentControl元素。

创建新控件时,它旨在捕获鼠标并允许拖动功能。如果已经在窗口上加载了网格并且我将起始点设置为MouseButtonEventArgs.GetPosition(窗口),则拖动计算的代码很好。但是当最初加载Grid时触发事件时,Point等于窗口的反向位置。例如。如果我的窗口位于(350,250),我的起点是(-350,-250)。

<div ng-controller="appointment as vm">
Search By Description :  <input class="form-control" placeholder="search by    description" type="text" ng-model="vm.filterText" />
{{vm.filterText}} </div>

是否有更合适的方法来获取鼠标位置的x,y坐标。如果需要,我可以使用屏幕坐标,但我发现的所有代码都使用了PointToScreen(m_start)。由于m_start不正确,这没用。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

你可以试试吗,我前段时间就抓住了它,它对我有用:

    [StructLayout(LayoutKind.Sequential)]
    public struct POINT
    {
        public int X;
        public int Y;

        public static implicit operator Point(POINT point)
        {
            return new Point(point.X, point.Y);
        }
    }

    [DllImport("user32.dll")]
    public static extern bool GetCursorPos(out POINT lpPoint);

    public static Point GetCursorPosition()
    {
        POINT lpPoint;
        GetCursorPos(out lpPoint);
        //bool success = User32.GetCursorPos(out lpPoint);
        // if (!success)

        return lpPoint;
    }