我已经在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();
答案 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
命名空间。