2

我正在使用 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它也会显示一个选择目录对话框。我做得对吗?

4

1 回答 1

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);

还是我误解了你的问题?

于 2020-03-12T10:02:46.740 回答