Eto.Forms асинхронная команда выполнила обработчик не обновляя TableLayout - PullRequest
0 голосов
/ 08 октября 2019

Я использую Eto.Forms для простого приложения на C #. Когда нажата кнопка, я хотел бы получить некоторые данные из API (используя Net.Http.HttpClient, который уже работает нормально), дождаться ответа и обновить некоторую информацию в TableLayout.

У меня естьпопробовал следующий код. Вызывается метод RefreshClicked, и выходные данные отладки печатают то, что я ожидал (данные, которые должны быть вставлены в таблицу), но таблица не меняется вообще. Также интересно отметить, что вызов DataTable.Rows.Clear() изнутри метода очищает таблицу.

Если я копирую и вставляю тот же код изнутри метода в конструктор и использую некоторые данные для целей тестирования, онработает так, как я ожидал (вставляет в таблицу), но не в этом методе.

// inside my class
private TableLayout DataTable = new TableLayout();
private async void RefreshClicked(object sender, EventArgs e)
{
    var results = await GetDataFromApi();

    foreach (Result result in results)
    {
        Console.Out.WriteLine(/* results for debugging purposes */);
        DataTable.Rows.Add(new TableRow(/* info from results */));
    }
}
// inside my constructor
Content = DataTable;

var Refresh = new Command
{
    // ...
};

Refresh.Executed += RefreshClicked;

Нет сообщений об ошибках, просто таблица не обновляется. Мы будем благодарны за любую помощь.

РЕДАКТИРОВАТЬ:

Вызов DataTable.Update() после добавления строк ничего не делает.

...