WPF MessageBox无法正常工作

时间:2015-09-24 20:55:07

标签: wpf messagebox

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

这些方法中的每一个都显示了我想要的消息框。问题是没有按钮工作。我点击OK,点击cancel,点击X,没有任何按钮执行任何操作。使用工具包消息框我也无法移动消息框。按钮也没有按下。好像他们被禁用了,但我不明白为什么。

编辑:我正在使用Prism和MEF来编写应用程序。在我的模块中,我有一个视图显示在我的Shell窗口的区域中。视图是带有按钮的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窗口附加了一个无边界行为,处理Windows消息(WndProc)并且它没有正确处理WM_NCACTIVATE消息。

不工作:

case UnsafeNativeConstants.WM_NCACTIVATE:
     handled = true;
     break;

WORKING:

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

1 个答案:

答案 0 :(得分:1)

尝试在调试器中运行您的应用程序,并在对话框可见时暂停,以确保消息泵/循环仍在运行且未死锁。这是我能想到你的用户界面可能没有反应的唯一原因。