Application MainWindow 在 WPF 中为空(使用 Caliburn Micro)
本文关键字:使用 Caliburn Micro MainWindow WPF Application | 更新日期: 2023-09-27 18:30:23
我正在开发一个 WPF 应用程序,我需要指向控件内应用程序的主窗口。我正在使用卡利本微。
Application.Current.MainWindow
null
我怎样才能获得卡利本微应用MainWindow
的参考?
这很有趣,我刚刚在另一篇文章中回答了这个问题......尝试在MainWindow.xaml.cs
文件的 Loaded
事件中设置 Application.Current.MainWindow
属性:
private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
Application.Current.MainWindow = this;
}
了解应用程序.当前.主窗口
当应用程序打开第一个窗口 ( MainWindow.xaml
) 时,该窗口设置为 Application.Current.MainWindow
。当窗口关闭时,另一个当前打开的窗口将设置为 Application.Current.MainWindow
。如果没有打开的窗口,则 Application.Current.MainWindow 设置为 null。
例如,如果您在启动时打开LoginWindow
,那么Application.Current.MainWindow
将被LoginWindow
。例如,当您关闭LoginWindow
时,可以Window1
Application.Current.MainWindow
。
2. 访问主窗口实例
如果要访问 MainWindow 类的实例,则应执行以下操作: Application.Current.Windows.OfType<MainWindow>().FirstOrDefault();
但是,如果未打开主窗口,则它将返回 null。不要尝试解决此问题 - 如果 MainWindow 尚未打开,或者它已经关闭,则不应访问它。
3. MVVM
在 MVVM 模式中,不应直接从视图模型访问视图。如果你这样做了,你将打破主要的MVVM问题,如关注点分离,可测试性等。那么问题来了,你为什么要 mvvm。
如果要在 MainWindow
中执行某些操作,则应在 MainWindowViewModel
上执行该操作。如果窗口打开,它将反映视图模型中的更改。如果不是,则不必反映更改的内容。 MainWindowViewModel
不应直接引用MainWindow
实例。