考虑以下代码:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
MessageBox.Show("MyMessage");
}如果我试图在加载WPF窗口后显示消息框,则在运行应用程序时,WPF窗口将显示透明的背景(只有非客户区域可见),并且需要3-5秒才能显示消息框。只有在消息框关闭后,WPF窗口才会恢复正常。
这是正常的吗?还有其他人经历过吗?
编辑:我添加了窗口外观的屏幕截图:

发布于 2012-09-12 19:47:50
MessageBox在Normal DispatcherPriority中显示,它发生在DataBind、Render和Loaded等东西之前,因此,初始化窗口对象的代码直到取消MessageBox之后才能运行。
您可以通过简单地将MessageBox显示在以后的DispatcherPriority (例如Background )中来解决这个问题。
private void Window_Loaded(object sender, RoutedEventArgs e)
{
InitializeComponent();
this.Dispatcher.BeginInvoke(DispatcherPriority.Background,
new Action(delegate() { MessageBox.Show("MyMessage"); }));
}发布于 2012-09-12 19:38:05
尝试这重载的Show方法,或任何其他重载,接受Window实例作为参数。
https://stackoverflow.com/questions/12394913
复制相似问题