主窗 口
主窗口是在App.axaml.cs
文件的OnFrameworkInitializationCompleted
方法中传递给ApplicationLifetime.MainWindow
的窗口:
public override void OnFrameworkInitializationCompleted()
{
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktopLifetime)
{
desktopLifetime.MainWindow = new MainWindow();
}
}
可以通过将Application.Current.ApplicationLifetime
强制转换为IClassicDesktopStyleApplicationLifetime
来随时检索它。
值得一提的是,开发人员应该记住,使用静态全局变量并从应用程序的任何位置访问MainWindow都可能是危险的,有时还会导致糟糕的用户体验。例如,所有与顶级窗口相关的 API 都应该从最具体的顶级窗口使用,通常是最新的活动窗口。通过这种方式,用户对话框就不会从错误的窗口打开。
注意
Avalonia中的移动和浏览器平台没有窗口的概念。相反,当实现ISingleViewApplicationLifetime
接口时,需要在Application.ApplicationLifetime
中设置MainView
控件。