0
我有一个WPF应用程序,我试图有效切换窗口的内容。我想出了以下的解决方案:UserControl的惰性实例化
App.cs
internal static Lazy<HomeUserControl> HomePage;
MainWindow.cs
public MainWindow()
{
InitializeComponent();
Application.Current.MainWindow.Content = App.HomePage;
}
HomeUserControl.cs
public HomeUserControl()
{
InitializeComponent();
}
我遇到一个问题,MainWindow.Content
基本上被设置为一个空白窗口(它实际上改变了MainWindow
的内容)。如果我使用App.MainWindow.Content = new HomePageUserControl()
,那么一切正常。但是,我想保留一个页面实例,这就是为什么我在App类中创建一个静态页面的原因。无论是否使用Lazy<>
,都会发生此问题。我试了一下,看看HomePage
是不是null
,我找回了一个标签,上面写着Value is not created.
,我敢肯定这是一个未初始化的Lazy<>
;但是,这只有在检查App.HomePage == null
时才会发生。有任何想法吗?
** XY问题**。你不应该需要这个。 UI元素的加载时间实际上是不可感知的,除非您拥有数千个UI元素,或者将数据或业务逻辑放入不属于它的UI中。 –
@HighCore嗯。如果你谈论的是懒惰地实例化页面,我也想知道,但最终这样做,因为它看起来像是性能提高,即使最小。我是否应该像正常一样将它们实例化,因为我目前没有大量页面? – danielunderwood
是的,我宁愿去标准的方式。 –