WPF:如何使自定义模式对话框闪烁?

Rab*_*uin 5 c# wpf window wndproc custom-controls

通常,当您打开模态对话框并尝试单击它的父窗口时,模态对话框的标题栏会闪烁.在WPF中创建自定义,无边框,无边框的窗口时,您将失去所有这些功能,并且必须自己重建它.我看起来又高又低,因为我的生活无法弄清楚如何让我的模态窗口闪烁.虽然它仍然会发出哔哔声......

我想我将不得不在WndProc中观察一些我必须处理的事件,但我无法弄清楚哪个事件或怎么做.我已经尝试观看窗口更改和窗口更改事件以及WM_ACTIVATE事件无济于事.我确定我只是错过了一些简单的东西,但我会很感激你的帮助.谢谢!

Rab*_*uin 6

private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
    {
        var retVal = IntPtr.Zero;

        switch (msg)
        {
            case UnsafeNativeConstants.WM_NCACTIVATE:
                retVal = UnsafeNativeMethods.DefWindowProc(hwnd, UnsafeNativeConstants.WM_NCACTIVATE, new IntPtr(1), new IntPtr(-1));
                AssociatedObject.UpdateTitlebar((int)wParam == 1 ? true : false);
                handled = true;
                break;
        }

        return retVal;
    }
Run Code Online (Sandbox Code Playgroud)

WndProc我已经连接到我的窗口附加的自定义行为.它在我的窗口上调用一个内部方法,它将适当地更新Titlebar的颜色.

感谢@Hans Passant指出我正确的方向.