WPF 消息框不工作

WPF MessageBox not working

在我的 WPF 中,我尝试了 System.Windows.MessageBox.ShowSystem.Windows.Forms.MessageBox.ShowXceed.Wpf.Toolkit.MessageBox.Show(来自 Wpf 工具包)。

这些方法中的每一种都完全按照我想要的方式显示消息框。问题是 none 个按钮有效。我点击OK,我点击cancel,我点击X,none的按钮无所不能。对于工具包消息框,我也无法移动消息框。按钮也不会按下。就好像他们被禁用了,但我不知道为什么。

编辑:我正在使用 Prism 和 MEF 来编写应用程序。在我的模块中,我有一个视图显示在我的 Shell Window 中的一个区域中。该视图是一个带有按钮的 UserControl。

<UserControl>
   <Grid>
      <Button content="click me" Click="Button_OnClick"/>
   </Grid>
</UserControl>

在后面的代码中我有 OnClick 方法。

private void Button_OnClick(object sender, RoutedEventArgs e)
{
   System.Windows.MessageBox.Show("test");
}

显示消息框,我可以移动它,'X' 在鼠标悬停时发光,但 'X' 和 'OK' 按钮都没有,执行任何操作。

我可以根据需要提供更多代码,我只是不想包含我的整个应用程序...

固定 主 WPF window 附加了一个无边界行为,它正在处理 windows 消息 (WndProc),但它没有正确处理 WM_NCACTIVATE 消息。

不工作:

case UnsafeNativeConstants.WM_NCACTIVATE:
     handled = true;
     break;

正在工作:

case UnsafeNativeConstants.WM_NCACTIVATE:
     retVal = UnsafeNativeMethods.DefWindowProc(hwnd, UnsafeNativeConstants.WM_NCACTIVATE, new IntPtr(1), new IntPtr(-1));
     handled = true;
     break;

internal static UnsafeNativeMethods
{
    [DllImport("user32", CallingConvention = CallingConvention.Winapi)]
    public static extern IntPtr DefWindowProc([In] IntPtr hwnd, [In] int msg, [In] IntPtr wParam, [In] IntPtr lParam);
}

在调试器中尝试 运行 您的应用程序,并在对话框可见时暂停,以确保消息 pump/loop 仍然是 运行 并且没有死锁。这是我认为您的 UI 可能没有响应的唯一原因。