WPF窗口无法点击

时间:2013-06-30 22:09:42

标签: c# wpf window

我用WPF(C#和XAML)创建了一个记分板应用程序,当我通过复选框启用锁定时,我需要让一个窗口完全没有响应。这意味着您无法单击它,光标不会更改,尤其是单击它时窗口任务栏不会出现。这个记分牌位于游戏之上,记分牌是最顶层的窗口,但由于某种原因,我不能完全无法点击。

我尝试过IsHitTestVisible,Focusable,IsManipulationEnabled,ResizeMode,WindowStyle并将它们全部设置为false而不起作用。我仍然可以点击窗口,它会调出Window的任务栏,当你有一个全屏窗口的游戏时,它会变得很烦人。

我该怎么办?

更新

通过更改一些谷歌搜索词来找到答案。

Win32 Class

    //Rest of this code in located in the class itself
    public const int WS_EX_TRANSPARENT = 0x00000020;
    public const int GWL_EXSTYLE = (-20);

    [DllImport("user32.dll")]
    public static extern int GetWindowLong(IntPtr hwnd,
    int index);

    [DllImport("user32.dll")]
    public static extern int SetWindowLong(IntPtr hwnd,
    int index, int newStyle);

    public static void makeTransparent(IntPtr hwnd)
    {
     int extendedStyle = GetWindowLong(hwnd, GWL_EXSTYLE);
     Win32.SetWindowLong(hwnd, GWL_EXSTYLE, extendedStyle | WS_EX_TRANSPARENT);
    }
    public static void makeNotTransparent(IntPtr hwnd)
    {
        int extendedStyle = GetWindowLong(hwnd, GWL_EXSTYLE);
        Win32.SetWindowLong(hwnd, GWL_EXSTYLE, extendedStyle ^ WS_EX_TRANSPARENT);
    }

事件

       base.OnSourceInitialized(e);

        IntPtr hwnd = new WindowInteropHelper(yourWindow).Handle;
        Win32.makeTransparent(hwnd);

2 个答案:

答案 0 :(得分:0)

您是否尝试过IsEnabled = false? 它适用于组件和窗口级别。

答案 1 :(得分:-1)

我看到了这个blog,他们在XNA游戏中放置了Wpf控件。我已经尝试了它的工作,你可以放置你的窗口,它也不会出现在任务栏中,他们也提供了全屏技术