Я проверил некоторые темы и Google, но не могу найти правильное решение.Я хочу, чтобы приложение WPF загружало информацию об элементах в DataGrid (столбцы элементов) с помощью TextBox (имя элемента) с помощью RestApi.
Код правильный и работает, но существует проблема с асинхронным обновлением DataGrid.
DataTable dt;
public DataTable Dt { get => dt; set { dt = value; dataGridItems.DataContext = Dt.DefaultView; } }
private async void ButtonSearch_Click(object sender, RoutedEventArgs e)
{
//buttonSearch.IsEnabled = false;
rest = new RestClass(ClientId, ClientSecret);
Task T = Task.Run(() => SearchItem(rest, textBoxProductName.Text));
T.ContinueWith((t) =>
{
dataGridItems.DataContext = Dt.DefaultView;
//buttonSearch.IsEnabled = true;
}, TaskScheduler.FromCurrentSynchronizationContext());
Выше код с небольшими изменениями (dataGridItems.DataBinding) работал в WinForms без проблем, но я не могу заставить его работать в приложении WPF.
private void SearchItem(RestClass Rest, string ItemName)
{
try
{
var x = Rest.GetTokenJ().Result;
ItemsOffersWPF.Rootobject searchResponse = Rest.requestSearchItem(ItemName);
GetItemsCollection(searchResponse);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
//dataGridItems.DataContext = Dt.DefaultView;
}
Я пробовал Invoke, InvokeAsync, но этоделает пользовательский интерфейс безответственным, чего я хочу избежать.