2009-12-02 70 views
6

当我在全屏幕WPF应用程序中的窗口之间切换时,如果是第一次显示屏幕,显示器将在显示窗口之前暂时变黑。这仅在第一次显示窗口时发生。有没有办法预先加载每个窗口,所以这不会发生?WPF窗口预加载

这是我已经试过:

myWindow.Show(); 
myWindow.Hide(); 

,但有一个明显的闪烁。

然后我尝试:

myWindow.Height = 0; 
myWindow.Width = 0; 
myWindow.WindowState = WindowState.Normal; 
myWindow.Show(); 
myWindow.Hide(); 
myWindow.Height = Screen.PrimaryScreen.Bounds.Height; 
myWindow.Width = Screen.PrimaryScreen.Bounds.Width; 
myWindow.WindowState = WindowState.Maximized; 

无频闪,可是当我再所示的窗口。它表现出来了一种奇怪的状态,不到一秒钟,然后更新到正确显示。

+0

我只想补充一点,它不仅是全屏应用程序的问题。打开包含大量视觉效果的新窗口时,我遇到同样的问题。问题在于创建数千个不同的包装,例如对于项目控件中的项目,首次布局构建和渲染。第一次切换到包含大量控件的选项卡时,可能会出现同样的问题。所以如果有人知道如何预加载控制,那将非常棒。 – levanovd 2009-12-02 05:58:43

回答

0

我有类似的问题。最后,我创建了一个启动画面,并在单独的线程中将启动画面加载到启动画面后面。这停止了​​闪烁,但使初始化应用程序加载更长。

+0

你是怎么做到的?在启动画面中实例化所有窗口而不显示它们? – SRKX 2012-01-09 13:56:17