3

考虑以下代码:

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    MessageBox.Show("MyMessage");
}

如果我在加载 WPF 窗口后尝试显示消息框,当我运行应用程序时,WPF 窗口以透明背景显示(只有非客户区可见),并且需要 3-5 秒直到出现消息框。只有在关闭消息框后,WPF 窗口才会恢复正常。

这是正常的吗?有没有其他人经历过这个?

编辑:我添加了窗口外观的屏幕截图:

在此处输入图像描述

4

2 回答 2

7

MessageBox显示在Normal DispatcherPriority上,它发生在 、 和 等之前DataBindRender因此Loaded初始化 Window 对象的代码直到您关闭MessageBox

您可以通过简单地在稍后的 DispatcherPriority 中显示来解决此问题MessageBox,例如Background

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    InitializeComponent();

    this.Dispatcher.BeginInvoke(DispatcherPriority.Background, 
        new Action(delegate() { MessageBox.Show("MyMessage"); }));
}
于 2012-09-12T19:47:50.377 回答
0

尝试这种方法重载Show,或任何其他重载,接受Window实例作为参数。

于 2012-09-12T19:38:05.157 回答