C#/AvaloniaUI - OpenFolderDialog
Posted
技术标签:
【中文标题】C#/AvaloniaUI - OpenFolderDialog【英文标题】: 【发布时间】:2020-06-23 20:53:40 【问题描述】:我正在使用 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
,它也会显示一个选择目录对话框。我做得对吗?
【问题讨论】:
这在我看来是无限递归的。至于通过窗口,看起来只是把它当作parameter。 @Zer0 你能形成一个完整的答案吗?问题是如何让该参数传递到那里。 【参考方案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);
还是我误解了你的问题?
【讨论】:
嘿@Mike,你确定这也适用于 Linux 和 Mac 吗? 我会试一试 - 我不确定,但我明确没有在其中放置任何特定于 Windows 的方法。以上是关于C#/AvaloniaUI - OpenFolderDialog的主要内容,如果未能解决你的问题,请参考以下文章