How to create a semi transparent window in WPF that allows mouse events to pass through How to create a semi transparent window in WPF that allows mouse events to pass through wpf wpf

How to create a semi transparent window in WPF that allows mouse events to pass through


I've had similar problem and found a solution:

public static class WindowsServices{  const int WS_EX_TRANSPARENT = 0x00000020;  const int GWL_EXSTYLE = (-20);  [DllImport("user32.dll")]  static extern int GetWindowLong(IntPtr hwnd, int index);  [DllImport("user32.dll")]  static extern int SetWindowLong(IntPtr hwnd, int index, int newStyle);  public static void SetWindowExTransparent(IntPtr hwnd)  {    var extendedStyle = GetWindowLong(hwnd, GWL_EXSTYLE);    SetWindowLong(hwnd, GWL_EXSTYLE, extendedStyle | WS_EX_TRANSPARENT);  }}

for your window set:

WindowStyle = NoneTopmost = trueAllowsTransparency = true

in code behind for the window add:

protected override void OnSourceInitialized(EventArgs e){  base.OnSourceInitialized(e);  var hwnd = new WindowInteropHelper(this).Handle;  WindowsServices.SetWindowExTransparent(hwnd);}

and voila - click-through window! See original answer in: http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/a3cb7db6-5014-430f-a5c2-c9746b077d4f


What you described sounds like the expected behavior. One solution is to set the Fill to {x:Null} on the Path as that is the only sure way to make an object not hit test.


I haveanother idea.

What if you made exactly ONE PIXEL, right under the mouse cursor, completely transparent? :]