Я создаю эту DataGrid:
DataTable _dt = new DataTable("MyDataTable");
_dt.Columns.Add("ID", typeof(int));
_dt.Columns.Add("File", typeof(string));
_dt.Columns.Add("Folder", typeof(string));
_dt.Columns.Add("Status", typeof(string));
_dt.Columns["ID"].AutoIncrement = true;
_dt.Columns["ID"].AutoIncrementSeed = 1;
_dt.Columns["ID"].AutoIncrementStep = 1;
FilesGridView.SelectionMode = DataGridSelectionMode.Extended;
FilesGridView.ItemsSource = _dt.DefaultView;
, а затем заполняю ее списком путей к файлам.
Когда я нажимаю кнопку Процесс , я хочу l oop через все строки в сетке и изменить значение столбца Status, строка за строкой .
Итак, я написал это:
private void ProcessButton_Click(object sender, RoutedEventArgs e)
{
foreach (DataRowView row in FilesGridView.ItemsSource)
{
row["Status"] = "Processing...";
System.Threading.Thread.Sleep(2000); //letting 2 sec pass as a test
}
}
но происходит то, что он начинает вычислять, и через 2 секунды * итерации в l oop истекают, таблица меняется сразу.
Я искал, что вход в foreach l oop, он изменял отображаемое значение первой строки, затем ожидал 2 se c и изменял отображаемое значение второй строки и т. д.
Чего мне не хватает? Как мне этого добиться?