UserControl的惰性实例化

时间:2013-10-22 21:25:35

标签: c# wpf user-controls lazy-initialization

我有一个WPF应用程序,我试图有效地切换窗口的内容。我想出了以下解决方案:

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.的标签,我很确定这是一个未初始化{{1}的代表};但是,只有在我检查Lazy<>时才会出现这种情况。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

尝试

Application.Current.MainWindow.Content = App.HomePage.Value;