WPF 中有OnStartupor OnLoading,可以很容易地覆盖,并且您可以在窗口启动时加载一些数据。但我在阿瓦洛尼亚找不到任何东西。
private static MainWindow _mainWindow;
public MainWindow()
{
InitializeComponent();
_mainWindow = this;
try
{
StaticClass.LoadData();
}
catch (Exception exc)
{
var messageBoxStandardWindow = MessageBox.Avalonia.MessageBoxManager
.GetMessageBoxStandardWindow("Error", exc.ToString());
messageBoxStandardWindow.ShowDialog(_mainWindow);
Environment.Exit(0);
}
#if DEBUG
this.AttachDevTools();
#endif
}
这看起来会起作用,但事实并非如此。当异常被捕获时,它会抛出新异常:'Cannot show window with non-visible parent.'. 到此基本MainWindow没有准备,这里也加载不了数据。这就是为什么我需要OnStartup替代方案,但我找不到它。
MessageBox来自MessageBox.Avalonia,因为默认的 Avalonia 出于某种原因错过了它。