提问人:Venelin 提问时间:3/12/2020 更新时间:3/12/2020 访问量:2576
C#/AvaloniaUI - OpenFolderDialog
C#/AvaloniaUI - OpenFolderDialog
问:
我正在使用 AvaloniaUI,我正在尝试实现:http://avaloniaui.net/api/Avalonia.Controls/OpenFolderDialog/
我想实现的是当我按下一个按钮时,它会触发显示一个对话框,让我选择一个目录。一旦我选择了一个目录,我想将其路径存储在 .openFold
var result
这是我的代码:
public async Task openFold()
{
var dialog = new OpenFolderDialog();
var result = await dialog.ShowAsync();
if (result != null)
{
await openFold(result);
}
Trace.WriteLine("DIR IS: " + result);
}
但是我不知道如何将当前主窗口传递给.ShowAsync
我不确定即使我将当前窗口传递给它,它是否会显示一个选择目录对话框。我做对了吗?ShowAsync
答:
3赞
Mike
3/12/2020
#1
我刚刚检查了一个 AvaloniaUI 应用程序,我在其中运行您的代码(除非您没有提供该方法的实现)。await openFold(result)
尽管如此,一切正常,我打开了文件夹选择窗口,我可以选择文件夹,然后返回。result
它既适用于给定的参数,也适用于不给定的参数,因为它是可选的。window
如果该方法是在类中定义的,则只需运行openFold()
MainWindow
var result = await dialog.ShowAsync(this);
如果要将方法放在其他位置,请为主窗口创建一个静态访问器变量:
在构造函数中分配它:
并通过以下方式调用文件夹选择窗口:public static MainWindow Instance;
Instance = this;
var result = await dialog.ShowAsync(MainWindow.Instance);
还是我误解了你的问题?
评论
0赞
Venelin
3/14/2020
嘿@Mike你确定这也适用于 Linux 和 Mac 吗?
0赞
Mike
3/14/2020
我会试一试 - 我不确定,但是我没有明确地将任何特定于 Windows 的方法放在那里。
评论