考虑以下代码:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
MessageBox.Show("MyMessage");
}
如果我在加载 WPF 窗口后尝试显示消息框,当我运行应用程序时,WPF 窗口以透明背景显示(只有非客户区可见),并且需要 3-5 秒直到出现消息框。只有在关闭消息框后,WPF 窗口才会恢复正常。
这是正常的吗?有没有其他人经历过这个?
编辑:我添加了窗口外观的屏幕截图:
考虑以下代码:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
MessageBox.Show("MyMessage");
}
如果我在加载 WPF 窗口后尝试显示消息框,当我运行应用程序时,WPF 窗口以透明背景显示(只有非客户区可见),并且需要 3-5 秒直到出现消息框。只有在关闭消息框后,WPF 窗口才会恢复正常。
这是正常的吗?有没有其他人经历过这个?
编辑:我添加了窗口外观的屏幕截图:
将MessageBox
显示在Normal
DispatcherPriority上,它发生在 、 和 等之前DataBind
,Render
因此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"); }));
}
尝试这种方法重载Show
,或任何其他重载,接受Window
实例作为参数。