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();
}
}