C#/AvaloniaUI - 打开文件夹对话框

C#/AvaloniaUI - OpenFolderDialog

我正在使用 AvaloniaUI 并且我正在尝试实现:http://avaloniaui.net/api/Avalonia.Controls/OpenFolderDialog/

我想要实现的是当我按下一个按钮时它触发 openFold 显示一个对话框让我选择一个目录。一旦我 select 一个目录,我想将它的路径存储在 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);
}

但是我不知道如何将当前的主要 window 传递给 ShowAsync

我不确定即使我将当前 window 传递给 ShowAsync 它是否会显示一个选择目录对话框。我做得对吗?

我刚刚检查了一个 AvaloniaUI 应用程序,其中我 运行 你的代码(await openFold(result) 除外,因为你没有提供该方法的实现)。

不过,一切正常,我正在打开文件夹选择 window,我可以选择文件夹,它在 result 中返回。

它在给定和不给定 window 参数的情况下都有效,因为它是可选的。

如果 openFold() 方法定义在 MainWindow class 中,您只需 运行
var result = await dialog.ShowAsync(this);

如果您想将方法放在其他地方,请为主要内容创建一个静态访问器变量 window:
public static MainWindow Instance;
在构造函数中赋值:
Instance = this;
并通过以下方式调用您的文件夹选择 window:
var result = await dialog.ShowAsync(MainWindow.Instance);

还是我误解了你的问题?