问题可能是由于主UI线程在等待对话框返回而被阻止导致的。可以使用异步方法来避免这种情况。
以下是一个简单的示例代码,演示了如何使用异步方法打开SaveFileDialog:
using Avalonia.Controls;
using Avalonia.Threading;
...
private async Task ShowSaveDialogAsync()
{
var dialog = new SaveFileDialog();
var result = await dialog.ShowAsync(MainWindow.Instance);
return result;
}
private async Task SaveFileAsync()
{
var filePath = await ShowSaveDialogAsync();
// Do something with the selected file path.
}
注意:ShowSaveDialogAsync方法应该被调用的线程必须是UI线程,所以我们使用Avalonia的Dispatcher来在UI线程上运行代码。