private void OnViewModelChanged()

in GameOfLife/View/PetriDishControl.cs [78:116]


        private void OnViewModelChanged(PetriDish oldValue, PetriDish newValue)
        {
            if (oldValue != null)
            {
                oldValue.Updated -= ViewModelOnUpdated;
            }

            if (newValue != null)
            {
                var width = newValue.Cells.GetLength(0);
                var height = newValue.Cells.GetLength(1);

                canvas = new Canvas {Background = BackgroundBrush};
                ellipses = new Ellipse[width, height];
                for (var i = 0; i < width; i++)
                {
                    for (var j = 0; j < height; j++)
                    {
                        var ellipse = new Ellipse
                        {
                            Width = CellSize,
                            Height = CellSize,
                            Fill = Brushes.Gray,
                            Margin = new Thickness(i * CellSize, j * CellSize, 0, 0)
                        };

                        ellipse.MouseLeftButtonDown += EllipseOnMouseMove;
                        ellipse.MouseMove += EllipseOnMouseMove;

                        ellipses[i, j] = ellipse;
                        canvas.Children.Add(ellipse);
                    }
                }

                Content = canvas;
                newValue.Updated += ViewModelOnUpdated;
                UpdateUi();
            }
        }