Я использую 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()
после добавления строк ничего не делает.