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

4
我正在使用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,它是否会显示一个选择目录对话框。我的操作是否正确?


1
这对我来说看起来是无限递归。至于传递窗口,看起来它只是将其作为参数传递。 - Zer0
@Zer0,你能否给出一个完整的答案吗?问题是如何获取该参数以便传递。 - Venelin
1个回答

3

我刚刚检查了一个使用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);

或者是我误解了你的问题?


嘿,@Mike,你确定这个程序在Linux和Mac上也能正常运行吗? - Venelin
我会尝试一下 - 不过我确定我没有在那里使用任何特定于Windows的方法。 - Mike

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接