当前窗口内容无法再识别

时间:2014-04-20 18:08:37

标签: c# wpf contentcontrol

我已经在MainWindow内容之上编写了代码。 当我在MainWindow之前添加一个登录掩码时,我的编程内容分发不再正常工作。

调用MainWindow并关闭login-mask时的代码:

登录掩码窗口代码(成功登录后)

MainWindow popup = new MainWindow();
popup.Show();
this.Close();

在MainWindow中,我调用的内容就像调用MainWindow时仍然有效:

MainWindow内容代码

this.contentControl.Content = new UserControlXYZ();

现在,当我从新加载的contentControl.Content调用另一个UserControl时,我得到一个NullPointerException(在添加它被加载的登录掩码之前):

UserControlXYZ内容代码

 (Application.Current.MainWindow.FindName("contentControl") as ContentControl).Content = new UserControlNEWControl();

1 个答案:

答案 0 :(得分:2)

应用程序主窗口设置为是应用程序的启动窗口的窗口。因此,在您的情况下,它将是“登录”窗口,因为您已关闭它, Application.Current.MainWindow 将返回null。

如果您想获得MainWindow,可以从 Windows collection 获取,如下所示:

MainWindow mainWindow = Application.Current.Windows.OfType<MainWindow>().First();
mainWindow.contentControl.Content = new UserControlNEWControl();

要使用 OfType<T>() and First() 扩展方法,请在班级中添加 System.Linq 命名空间。