WPF窗口预加载

6

在我的全屏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;

没有闪烁,但是当我显示窗口时,它在一瞬间以奇怪的状态显示,然后更新以正常显示。

我只想补充一下,这不仅是全屏应用程序的问题。当打开包含大量可视化内容的新窗口时,我遇到了同样的问题。问题在于创建成千上万个不同的包装器,例如项目控件中的项目,首次布局构建和渲染。当首次切换到包含大量控件的选项卡时,也可能出现相同的问题。因此,如果有人知道如何预加载控件,那就太好了。 - levanovd
2个回答

0

我曾经遇到类似的问题。最终,我创建了一个闪屏,并在独立线程中在闪屏后面加载控件。这样可以避免闪烁,但是会使应用程序的初始加载时间变长。


你是如何做到的?在启动画面中实例化所有窗口而不显示它们? - SRKX

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接