WPF 中有OnStartup
or 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 出于某种原因错过了它。