Я пытаюсь обновить сетку, но она не работает должным образом
UpdateLayout () и CollectionViewSource.GetDefaultView (gridGame.Children) .Refresh () не решают мою проблему,Я даже делаю это для простой замены
Это мой код:
private void Time_Elapsed(object sender){
for (int i = 0; i < 3; ++i)
{
for (int j = 0; j < 3; ++j)
{
Node auxNode = (Node)AuxPath[0];
var value = (auxNode.getNodeState().getState()[i, j] != 0) ? auxNode.getNodeState().getState()[i, j].ToString() : null;
Dispatcher.Invoke(() => label.Content = value);
Dispatcher.Invoke(() => label.Background = (auxNode.getNodeState().getState()[i, j] != 0) ? Brushes.White : Brushes.Sienna);
Dispatcher.Invoke(() => Grid.SetColumn(label, j));
Dispatcher.Invoke(() => Grid.SetRow(label, i));
Dispatcher.Invoke(() => gridGame.Children.Remove(label));
Dispatcher.Invoke(() => gridGame.Children.Add(label));
}
}
//Dispatcher.Invoke(() => CollectionViewSource.GetDefaultView(gridGame.Children).Refresh()); Testei essa e não deu certo
//Dispatcher.Invoke(() => gridGame.UpdateLayout());
AuxPath.RemoveAt(0); Testei tmb e não deu muito certo
}
else
{
time.Stop();
}
}
}
Это обновление происходит по Time_Elapsed, оно выполняет заполнение сетки новыми значениями при каждом вызове функциивзаимодействие.
Dispatcher.Invoke (() => gridGame.UpdateLayout () );и Dispatcher.Invoke (() => CollectionViewSource.GetDefaultView (gridGame.Children) .Refresh () );они не имеют никакого значения, и при этом они не выполняются, и все же они только обновляют ячейку 3-3 (в этом случае i = 2 и j = 2), использую ли я обе функции или нет. Только эта ячейка обновляется / обновляется с каждым переходом Time_Elapsed.
Функция работает очень хорошо, все переходы выполняются и все значения верны, я отладил все значения.
Я не понимаю, почему он не обновляет всю сетку, все 9 ячеек одновременно, а обновляет только последнюю ячейку.
Стоит отметить, что яиспользуя буквально Grid, а не DataGrid.
Может ли кто-нибудь помочь мне решить эту проблему?