I'm converting a UserControl from Windows Form to WPF, Here is my Windows Form working code:
GlobalMouseHandler mouseHandler = new GlobalMouseHandler();
mouseHandler.MouseMove += OnGlobalMouseMove;
mouseHandler.MouseButtonUp += OnGlobalMouseButtonUp;
public class GlobalMouseHandler : IMessageFilter, IDisposable
{
public event MouseMovedEvent MouseMove;
public event MouseButtonUpEvent MouseButtonUp;
public GlobalMouseHandler(){
Application.AddMessageFilter(this);
}
public bool PreFilterMessage(ref Message m)
{
switch (m.Msg)
{
case WM_MOUSEMOVE:
MouseMove?.Invoke();
break;
case WM_LBUTTONUP:
MouseButtonUp?.Invoke();
break;
}
return false;
}
}
I used IMessageFilter to get the mouse move and mouse up events in my application and attach to them.
Now, I know that IMessageFilter is not available in WPF, but is there a simple way to record these simple mouse events in WPF?
You can handle messages similar way (mouse move for example):
Xaml:
Code-behind:
Of course, if you don't want to do it in native WPF manner (left button up for example):