披露:这是我的第一个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不正确,这没用。
非常感谢任何帮助。
答案 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;
}