Mouse Move not trigger outside WPF Main Window
Use the CaptureMouse() method.
For your example above, you could add:
window.CaptureMouse();
in your code-behind inside the MouseDown event handler.
You then need to call:
window.ReleaseMouseCapture();
in your code-behind inside the MouseUp event handler.
I needed to be able to capture mouse position outside of the WPF window regardless of any mouse button pressed. I ended up using Interop to call a WINAPI GetCursorPos combined with a thread instead of an event for the window.
using System.Runtime.InteropServices;
using Point = System.Drawing.Point;
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool GetCursorPos(ref Point lpPoint);
public MainWindow()
{
InitializeComponent();
new Thread(() =>
{
while (true)
{
//Logic
Point p = new Point();
GetCursorPos(ref p);
//Update UI
Dispatcher.BeginInvoke(new Action(() =>
{
Position.Text = p.X + ", " + p.Y;
}));
Thread.Sleep(100);
}
}).Start();
}
}
Works great!