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
是的,我寧願去標準的方式。 –