Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# UserControl的延迟实例化_C#_Wpf_User Controls_Lazy Initialization - Fatal编程技术网

C# UserControl的延迟实例化

C# UserControl的延迟实例化,c#,wpf,user-controls,lazy-initialization,C#,Wpf,User Controls,Lazy Initialization,我有一个WPF应用程序,我试图有效地切换窗口的内容。我提出了以下解决方案: App.cs HomeUserControl.cs 我遇到了一个问题,MainWindow.Content基本上被设置为一个空白窗口(实际上它正在更改MainWindow的内容)。如果我使用App.MainWindow.Content=new HomePageUserControl(),一切正常。但是,我想保留页面的一个实例,这就是为什么我在App类中创建了一个静态实例。无论是否使用Lazy,都会出现此问题。我试着检查主

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

App.cs

HomeUserControl.cs

我遇到了一个问题,
MainWindow.Content
基本上被设置为一个空白窗口(实际上它正在更改
MainWindow
的内容)。如果我使用
App.MainWindow.Content=new HomePageUserControl()
,一切正常。但是,我想保留页面的一个实例,这就是为什么我在App类中创建了一个静态实例。无论是否使用
Lazy
,都会出现此问题。我试着检查
主页
是否为
,然后我得到一个标签,上面写着
值未创建。
,我很确定这是一个未初始化的
惰性
的表示;但是,仅当我选中
App.HomePage==null
时才会发生这种情况。有什么想法吗?

试试看

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

XY问题。你不应该需要这个。UI元素的加载时间实际上是无法感知的,除非您有数千个UI元素,或者将数据或业务逻辑放在UI中它不属于的地方。@HighCore-Hmm。如果您说的是惰性地实例化页面,我也很好奇,但最终还是这样做了,因为这似乎是一个性能提升,即使是最小的。我是否应该像平常一样实例化它们,因为我现在没有太多的页面?是的,我宁愿按照标准方式。
public MainWindow()
   {
       InitializeComponent();

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

   }
public HomeUserControl()
   {
       InitializeComponent();
   }
Application.Current.MainWindow.Content = App.HomePage.Value;