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

标签 c# wpf window custom-controls wndproc

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

我想我将不得不在 WndProc 中观察一些我必须处理的事件,但我不知道是哪个事件或如何处理。我试过观察窗口更改和窗口更改事件以及 WM_ACTIVATE 事件无济于事。我确定我只是遗漏了一些简单的东西,但我将不胜感激。谢谢!

最佳答案

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;
    }

我已连接到附加到我的窗口的自定义行为中的 WndProc。它在我的窗口上调用一个内部方法,该方法将适本地更新标题栏的颜色。

感谢@Hans Passant 为我指明了正确的方向。

关于c# - WPF:如何使自定义模式对话框闪烁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27158317/

相关文章:

c# - ViewModel 直接绑定(bind)到 Entity Framework 模型的副作用

jquery - `window.XMLHttpRequest` 未定义

c# - HTTP 状态代码 500、.net core CORS 和 HttpClient 错误

c# - 如何调试 linq to sql InsertOnSubmit 语句?

c# - 如何在 wpf datagrid 中获取所选单元格的行标题值?

android - 使用 FLAG_ACTIVITY_REORDER_TO_FRONT 在持续运行的 UI Activity 之间切换会导致 "no window focus"错误

api - Win 32 API 设置窗口最小尺寸以保持文本完全可见

c# - 在配置中实现 JWT 时出现 ASP.net Core API 错误

c# - 从 C# SONAR 分析中排除生成的代码

wpf IValueConverter 不更新 View