C # / AvaloniaUI - OpenFolderDialog - PullRequest
0 голосов
/ 11 марта 2020

Я использую 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 Ответ

1 голос
/ 12 марта 2020

Я только что проверил приложение AvaloniaUI, где я запускаю ваш код (кроме await openFold(result), поскольку вы не предоставили реализацию этого метода).

Тем не менее, все работает отлично, я получаю окно выбора папки открыто, я могу выбрать папку, и она возвращается в result.

. Она работает как с заданным параметром window, так и без него, поскольку это необязательно.

Если метод openFold() определен в классе MainWindow, вы просто запускаете
var result = await dialog.ShowAsync(this);

Если вы хотите разместить метод в другом месте, создайте переменную доступа stati c для главное окно:
public static MainWindow Instance;
Назначьте его в конструкторе:
Instance = this;
и вызовите окно выбора папки с помощью:
var result = await dialog.ShowAsync(MainWindow.Instance);

Или я неправильно понял вашу проблему?

...