Как обновить / обновить всю сетку (все ячейки) в WPF C # - PullRequest
0 голосов
/ 08 ноября 2019

Я пытаюсь обновить сетку, но она не работает должным образом

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.

Может ли кто-нибудь помочь мне решить эту проблему?

...