2013-10-22 67 views
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時纔會發生。有任何想法嗎?

+1

** XY問題**。你不應該需要這個。 UI元素的加載時間實際上是不可感知的,除非您擁有數千個UI元素,或者將數據或業務邏輯放入不屬於它的UI中。 –

+0

@HighCore嗯。如果你談論的是懶惰地實例化頁面,我也想知道,但最終這樣做,因爲它看起來像是性能提高,即使最小。我是否應該像正常一樣將它們實例化,因爲我目前沒有大量頁面? – danielunderwood

+0

是的,我寧願去標準的方式。 –

回答

1

嘗試

Application.Current.MainWindow.Content = App.HomePage.Value; 
相關問題